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远程操作

posted @ 2022-06-28 00:11  VictoryHan  阅读(662)  评论(0)    收藏  举报