SSH密钥生成及登录
公钥与私钥
公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥加密又称非对称加密。私钥加密算法使用单个私钥来加密和解密数据。由于具有密钥的任意一方都可以使用该密钥解密数据,因此必须保护密钥不被未经授权的代理得到。私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。私钥加密算法非常快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),其中的一个向外界公开,称为公钥;另个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
特点:
1.公开的密钥叫公钥,只有自己知道的叫私钥
2.用公钥加密的数据只有对应的私钥可以解密
3.用私钥加密的数据只有对应的公钥可以解密
4.如果可以用公钥解密,则必然是对应的私钥加的密
5.如果可以用私钥解密,则必然是对应的公钥加的密
6.公钥和私钥是相对的,两者本身并没有规定哪一个必须是公钥或私钥。
SSH密钥登录的原理
初次登录:

非初次登录

SSH密钥对生成
命令详解
ssh-keygen [选项]
-b:指定密钥长度;-e:读取openssh的私钥或者公钥文件;-C:添加注释;-f:指定用来保存密钥的文件名;-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;-l:显示公钥文件的指纹数据;-N:提供一个新密语;-P:提供(旧)密语;-q:静默模式;-t:指定要创建的密钥类型。
密钥对生成
ssh-keygen -t rsa
一路回车
此命令会生成一对密钥,其中id_rsa为私钥文件,id_rsa.pub为公钥文件。
文件位置:
windows:C:\Users\[当前用户名]\.ssh
linux:~/.ssh
Linux配置密钥免密登录
配置密钥
首先应该将上面生成的公钥弄到被登录服务器的~/.ssh/下,
ssh-copy-id -i [客户端公钥位置] [服务器用户名]@][服务器ip],这条命令会自动将密钥文件放在 ~/.ssh 下并命名为authorized_keys。
windows的终端,比如:cmd、powershell没有这条命令。大家可以用Git自带的GitBash或者其他ssh终端软件。
为了避免后期文件权限问题,建议上面命令中的用户名和你要ssh登录的用户名一致。
ps:.开头的文件在linux中是隐藏文件,可通过ll命令查看。
配置SSH,打开密钥登陆功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置(没有的项在后面追加):
RSAAuthentication yes
PubkeyAuthentication yes
另外,请留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录(这项忽略也无伤大雅):
PasswordAuthentication no
最后,重启 SSH 服务:
service sshd restart
客户端以密钥方式登录
SSH客户端种类繁多,细节繁杂,这里不再赘述。相信各位对自己使用的SSH客户端一定了如执掌。
Python实现SSH远程操作

浙公网安备 33010602011771号