Windows通过密钥SSH登陆Linux

概述

客户端通过密钥SSh登陆Linux的条件:

  • 服务器端登陆账户home目录下的.ssh文件夹存在公钥,命名authorized_keys
  • 客户端拥有与公钥配对的私钥
    下面以win 10通过自带的OpenSSH客户端以密钥方式登陆Ubuntu为例进行说明
操作
  1. 生成密钥对
student@vagrant-ubuntu-trusty-64:~$ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/student/.ssh/id_rsa):这里按enter默认或另外写路径和文件名
Enter passphrase (empty for no passphrase):是否给私密再加一次密,无需则不填
Enter same passphrase again:由于我有设置,这里需要再输入一次密码
Your identification has been saved in /home/student/.ssh/id_rsa.
Your public key has been saved in /home/student/.ssh/id_rsa.pub.
The key fingerprint is:
78:ad:4c:7e:cc:a4:9b:ac:34:50:4c:59:c8:ff:60:a1 student@vagrant-ubuntu-trusty-64
The key's randomart image is:
+--[ RSA 2048]----+
|     ..+.        |
|     o+ .        |
|      oo .       |
|     .E.+.       |
|    . ..Soo      |
|     . = *.      |
|      o = +      |
|     . o +       |
|      ..+        |
+-----------------+
  1. 配置公钥
# 查看密钥对是否生成
student@vagrant-ubuntu-trusty-64:~$ ls .ssh
id_rsa  id_rsa.pub
# 将公钥放置在 authorized_keys 中
student@vagrant-ubuntu-trusty-64:~$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
# 设置权限
student@vagrant-ubuntu-trusty-64:~$ chmod 600 .ssh/authorized_keys
student@vagrant-ubuntu-trusty-64:~$ chmod 700 .ssh

上面将公钥放置在 authorized_keys中的步骤用到了输出重定向,如果不嫌麻烦可以用mkdir .ssh和touch .ssh/authorized_keys手动创建,然后cat出id_rsa.pub的内容,用vim或nano将其复制到authorized_keys中。

  1. 下载私钥到客户端
  • 手工操作方式:本地新建一个文本文件,将上述id_rsa中内容复制进去
  • 通过scp命令复制:
PS C:\Users\XXX> scp -P 2222 student@127.0.0.1:/home/student/.ssh/id_rsa D:\key
student@127.0.0.1's password: 这里输入密码
id_rsa   100% 1766     1.7KB/s   00:00

上述命令加入了端口号,一般默认22,不用加

  1. 通过密钥登陆
PS C:\Users\xxx> ssh student@127.0.0.1 -p 2222 -i D:\id_rsa
Enter passphrase for key 'D:\id_rsa': 这里输入密钥保护密码
Welcome to Ubuntu 14.04.6 LTS (GNU/Linux 3.13.0-167-generic x86_64)
……

登陆成功!这里只输入了密钥保护密码,而不用再输入账号本身的口令,如果之前设置不用给密钥再加密,这里可直接登陆

问题与解决

从远程复制到windows的密钥,在登陆时可能会出现如下提示:

Permissions for 'D:\id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

同样,这是权限的问题,在密钥文件的安全设置中将只加入当前用户的权限即可。操作截图如下:

  • 文件属性-安全-高级:
    Windows通过密钥SSH登陆Linux_第1张图片
  • 移除权限继承:
    Windows通过密钥SSH登陆Linux_第2张图片
  • 加入当前用户:
    Windows通过密钥SSH登陆Linux_第3张图片

你可能感兴趣的:(OS,Linux)