开启自嘲~
作为一名Java Web程序员,免不了要跟服务器打交道。平时自己在Linux系统上学习是习惯性的使用密码,对于服务器,安全很重要,通常是通过密钥来管理服务器。
处于安全考虑,一般是在客户端生成公钥和私钥,然后将公钥配置到服务器端。
远程ssh连上server,su – 到root,通过以下命令编辑sshd服务配置:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 修改前先备份 vim /etc/ssh/sshd_config
修改点:
1. PermitRootLogin no # 禁止root通过ssh登录
2. RSAAuthentication yes # 开启RSA验证
3. PubkeyAuthentication yes # 开启公钥验证
4. AuthorizedKeysFile .ssh/authorized_keys # 指定公钥存储文件
5. PermitEmptyPasswords no # 禁止空密码登录
6. PasswordAuthentication no # 禁止通过密码登录
7. ChallengeResponseAuthentication no # 开启密钥方式的同时禁止密码登录
第7点如果设置为yes,哪怕1~6都按照以上设置了,客户端依然可以通过密码登录。
附上完整配置:
本菜鸟的操作系统是Fedora 27,所以在终端ssh的时候必须指定私钥,不然是会报错的。
以上讲完了server端的sshd配置,下面就需要在客户端生成公钥和私钥了。
通过以下命令生成:
cd ~ ssh-keygen -b 4096 -t rsa -C rtfsc8 -f .ssh/cbd-rtfsc8
在当前用户的~/.ssh/目录下生成了两个文件:
cbd-rtfsc8 # 私钥文件,本地登录server使用
cbd-rtfsc8.pub # 公钥文件,上传到server
在terminal输入以下命令:
scp-copy-id -i ~/.ssh/cbd-rtfsc8.pub rtfsc8@dev.rtfsc8.top
或者
scp ~/.ssh/cbd-rtfsc8.pub rtfsc8@dev.rtfsc8.top:~/.ssh/ cat ~/.ssh/cbd-rtfsc8.pub >> ~/.ssh/authroized_keys
或者 在server端直接编辑并粘贴公钥内容
vim ~/.ssh/authroized_keys
第1、2种需要输入密码,第3种直接编辑,任选一种即可。
另,还有个权限问题:
chmod 700 ~/.ssh chmod 600 ~/.ssh/*
以上都执行成功后,重启sshd服务:
systemctl restart sshd.service # Fedora 27 | CentOS 7 service sshd restart # CentOS 5/6
此时在客户端的terminal运行ssh:
ssh -i ~/.ssh/cbd-rtfsc8 rtfsc8@dev.rtfsc8.top
密钥如果设置了密码,此处输入密钥密码即可,若未设置则免密登录。
不指定密钥则无法登录server。
ssh_exchange_identification: read: Connection reset by peer
碰到这种情况,请在server端检查拒绝连接的ip列表里是否包含你的外网IP地址:
cat /etc/sshd.deny.hosteye | grep 外网IP
删除该IP并保存文件,在客户端再次执行连接命令即可。
ssh rtfsc8@dev.rtfsc8.top
执行以上命令出现如下提示:
rtfsc8@dev.rtfsc8.top: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
说明server端已经配置了密钥登录,需要指定私钥文件。
声明:
未经特别说明,本站Blog均采用署名-非商业性使用-禁止演绎 2.5 中国大陆授权。任何违反本协议的行为均属于非法行为。如需非商业性转载,请保留署名。如需商业性转载出版,请直接和我联系。