Open tsunhua opened 6 years ago
解决的问题:明文登录信息暴露问题。
历史:
核心:非对称加密。
整个过程是这样的:
用户使用 ssh user@host 登录远程主机时,系统会提示远程主机的公钥指纹,当用户确认接收该公钥指纹时,会保存到 $HOME/.ssh/known_hosts 中,下次登录时会跳过。
ssh user@host
$HOME/.ssh/known_hosts
公钥指纹:公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较。
98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
用户将自己的公钥储存在远程主机的具体过程如下:
使用 ssh-keygen 在本地目录 $HOME/.ssh/ 生成公钥 id_rsa.pub 和密钥 id_rsa ;
ssh-keygen
$HOME/.ssh/
id_rsa.pub
id_rsa
使用 ssh-copy-id user@host 将公钥上传至远程主机 host 中,实现细节是:
ssh-copy-id user@host
$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
可以通过配置文件快速进行 ssh 登录,配置文件有两种:
~/.ssh/config
/etc/ssh/ssh_config)
可配置项有:
ssh [Host]
如在 ~/.ssh/config文件中按如下配置,则可以通过 ssh xx-server 进行快速 ssh 登录。
ssh xx-server
Host xx-server HostName ssh.xx-server.com User xx_user Port 2200 IdentityFile ~/.ssh/local_id_rsa
*.pN
*.p12
*.key
pem
der
🐂
SSH 背景
解决的问题:明文登录信息暴露问题。
历史:
SSH 原理
核心:非对称加密。
整个过程是这样的:
口令登录
用户使用
ssh user@host
登录远程主机时,系统会提示远程主机的公钥指纹,当用户确认接收该公钥指纹时,会保存到$HOME/.ssh/known_hosts
中,下次登录时会跳过。公钥登录
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
用户将自己的公钥储存在远程主机的具体过程如下:
使用
ssh-keygen
在本地目录$HOME/.ssh/
生成公钥id_rsa.pub
和密钥id_rsa
;使用
ssh-copy-id user@host
将公钥上传至远程主机 host 中,实现细节是:SSH CONFIG FILE
可以通过配置文件快速进行 ssh 登录,配置文件有两种:
~/.ssh/config
;/etc/ssh/ssh_config)
。可配置项有:
ssh [Host]
进行快速登录;如在
~/.ssh/config
文件中按如下配置,则可以通过ssh xx-server
进行快速 ssh 登录。名词解释
*.pN
,*.p12
是包含证书和密钥的封装格式*.key
pem
也可以是der
参考