服务器的免密登录(SSH Key的使用)

SSH

Secure SHell :

是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。通过加密保证了数据的保密性和完整性。ssh采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。
传统的FTP、Telnet是再网络中明文传送数据、用户账号和密码,很容易受到中间人攻击。
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗

ssh客户端(ssh)                       ssh服务端(sshd)

     +----------+                       +---------+
     |          |                       |         |
     |          |                       |         |
     |          |                       |         |
     |          |                       |         |
     +---+---+--+                       +-+---+---+
         |   |                            |   |
         |   |                            |   |
         |   +----------------------------+   |
         |                                    |
         |        ssh加密了的TCP通信            |
         +------------------------------------+

                    SSH连接

SSH只是一种协议,其开源实现的有OpenSSH程序

SSH Key

SSH 秘钥对 最直观的作用:让你方便的登录到SSH服务器,而无需输入密码。由于你无需发送你的密码到网络中,SSH秘钥对被认为是更加安全的方式
原因是:SSH利用SSH key来进行前面提到的基于秘钥的安全验证

使用SSH key的步骤:
  • 在客户端生成SSH KEY(秘钥对:公钥和秘钥)
  • 在服务端的配置文件中加入你的公钥。(比如我们需要再GItHub中粘贴你的公钥)
生成秘钥对

ssh-keygen 命令用于为ssh生成、管理和转换认证秘钥,他支持RSA和DSA(ED) 三种算法认证秘钥。
该命令的选项:

-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型。

生成秘钥对时,有一个选项要求你设置密码(passphrase),该密码是用来保护你的私钥的密码。如果设置了则在使用私钥时会要求你输入这个密码:一般不设置,【之后可以更改密码,使用 " ssh-keygen -p "】

生成后最好将私钥进行备份,另还有-C 选项,用于为指定注释,通常使用自己的邮件名作为注释

示例:为了安全考虑使用RSA加密方式并指定密钥长度 -b 2048(1024的密钥长度能够被破解,建议指定为2048或4096)。

$ ssh-keygen -t rsa -C "[email protected]" -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回车键 (如果需要生成多对key,则输入/home/users/.ssh/filename)
Enter passphrase (empty for no passphrase): 输入密码(一般不输入密码,直接回车)
Enter same passphrase again: 再次输入密码
...

# 查看公钥文件中的内容
$ cat ~/.ssh/id_rsa.pub
ssh-rsa "公钥内容" [email protected]
#或者
$ cat ~/.ssh
$ cat ./id_rsa.pub
# 注意在其他地方导入公钥时一定要将公钥文件中的*全部内容*都导入,包括末尾你的邮箱。

如何创建多个ssh 可以、而不是覆盖默认的文件

在创建ssh key时自动输入路径和文件名称,而非使用默认路径和文件名即可
或者使用个 -f 来指定文件名

ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/second-rsa

使用非默认的SSH Key

对于OpenSSH 客户端(liunx默认安装),需要在 ~/.ssh/config 文件中进行配置(如果没有改文件则自行创建一个)。
分为如下两种情况

1.为不同服务器的同一用户配置不同的SSH key

好吧,这里同一用户在不同服务器上是可以使用同一个SSH key

2.配置多个账户

为同一个台服务器配置多个账户,那么可以这样在config文件中配置:

# coding
Host git.coding.net
User [email protected]
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa  //默认的私钥

# second
Host git.coding.net
User [email protected]
PreferredAuthentications publickey
IdentityFile ~/.ssh/second_rsa  // 生成的第二个私钥

eg:如果服务器中没有安装设置SSHkey,则在服务器 查看cat ~/.ssh authorized_keys 文件是否有配置的公钥

没有的话就复制上面生成的id_rsa.pub de 中的内容复制进 authorized_keys 文件中即可

你可能感兴趣的:(服务器的免密登录(SSH Key的使用))