ssh免密登陆Linux
1、生成公钥和私钥
公钥私钥理论上可以在服务器生成,也可以在Client端生成,以下为在Windows端生成,Windows系统为Client端。服务器端采用Centos8。
ssh-keygen -t rsa
不指定文件名,生成两个文件,id_rsa和id_rsa.pub
id_rsa为私钥
id_rsa.pub为公钥
2、上传公钥
将id_rsa.pub上传到Linux服务器
通过命令:
cat id_rsa.pub >> authorized_keys
加载到authorized_keys文件中。
authorized_keys文件默认在/root/.ssh目录下。
编辑/etc/ssh/sshd_config文件
vi /etc/ssh/sshd_config
PermitRootLogin yes
PermitEmptyPasswords yes
PasswordAuthentication yes
保存后,重启ssh服务
systemctl restart sshd.service
3、客户端ssh命令行连接服务器
ssh -i id_rsa root@server-ip
4、通过SecureCRT连接Linux
点Option->Session Options
在Connetion下SSH2配置项下
Authentication下,勾选PublicKey,点右边的Properties;
在弹出的Public Key Properties中,根据需要选择当前会话或全局会话(作用域不同)如只用于连接特定服务器;
选择Use session public key setting
Session settings选Use identity or certificate file,输入id_rsa路径,或通过文件选择框选中刚刚生成的私钥。
点OK退出Public Key Properties。
完善Session Options其它设置,如Hostname(填服务器IP)、Port(ssh默认22)、Firewall(None)、Username(Linux服务器用户名,本例为root)。点OK保存。
至此可免密通过SecureCRT连接Linux。
5、小插曲
在centos8上,通过命令ssh-keygen -t rsa生成的私钥,在SecureCRT提示无法找到对应的公钥(public key)。经过一番折腾,发现Centos8不加-b(私钥位数,有文档说64的倍数,有说1024的位数),默认生成的是3072位的密钥,而本机的SecureCRT只支持512到2048位的密钥。
在Centos8下用如下命令:
ssh-keygen -b 2048 -t rsa -f test_rsa
生成的私钥在SecureCRT上导入成功。
ssh-keygen参考:https://www.cnblogs.com/zhengah/p/4959725.html
sshd参考:https://blog.csdn.net/hddddk/article/details/83142399