linux生成SSH密钥
linux生成SSH密钥(免密登录)/centOS8 问题总结
1.上命令
执行 ssh-keygen -t rsa -b 4096
Enter file in which to save the key 输入要保存密钥的文件 可以不输入直接回车
Enter passphrase (empty for no passphrase): 输入创建密码 在使用秘钥的时候需要数据密码 也可不输入
Enter same passphrase again: 再次输入密码
此时秘钥应该生成成功了
执行 ll ~/.ssh/ 这个目录下面一个公钥一个私钥 id_rsa id_rsa.pub
私钥需要保存下来 登录的时候使用
执行 cat id_rsa.pub >> authorized_keys 将公钥追加到authorized_keys文件中
或者 mv id_rsa.pub authorized_keys 将名称直接改成authorized_keys
执行 chmod 600 ~/.ssh/authorized_keys 赋权限
执行 sz id_rsa (没有这个命令 要先安装 yum -y install lrzsz) 或者用xftp下载私钥
执行 vim /etc/ssh/sshd_config
修改配置文件
Port 12345 端口号默认 22 可以不用修改,修改后安全性更高
PasswordAuthentication no ##yes 改为no,不使用密码登录
PubkeyAuthentication yes ##去掉注释,开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys #默认应该就是这样的
执行 systemctl restart sshd 重新启动ssh
恭喜您 可以用私钥登录了
看到这里你是不是报错了
刚刚是不是改了端口,如果不是这里可能不能解决你的问题
修改了端口执行重启ssh报错
先执行 semanage port -l | grep ssh 看看ssh都有哪些端口开放的
执行 semanage port -a -t ssh_port_t -p tcp 12345 开放你需要修改的端口
再 systemctl restart sshd 重新启动ssh是不是成功了
还有一点
执行 firewall-cmd --zone=public --list-ports 看看防火墙都开了哪些端口 没有刚刚的需要打开
执行 firewall-cmd --permanent --add-port=12345/tcp 开放端口
执行 firewall-cmd --reload 重启防火墙
完结
2.当使用JSCh.出现问题
错误信息: com.jcraft.jsch.JSchException: invalid privatekey: [B@4aab4fb0
问题原因:ssh免密格式OPENSSH不支持!
解决办法
1. 删除原来的密钥
rm -rf ~/.ssh/
2.换一种格式,重新生成(执下面行命令后,全敲回车)
ssh-keygen -t rsa -m PEM
生成的文件内容为:RSA 类型