禁止ssh密码登录 使用密码对登录


查找相关文章:ssh-keygen ssh

请先备份,本内容不对任何操作以及产生的后果负责

1.增加用户

useradd laolee

2.生成密钥对

切换到用户laolee

su laolee

生成配对钥匙

ssh-keygen -b 1024 -t rsa
# 输入口令 为了加强安全可以在这里再设置一层密码,这样就算别人有你的钥匙也没有用
Enter passphrase (empty for no passphrase): 
# 再次输入口令
Enter same passphrase again:

#进入用户SSH配置文件的目录
cd ~/.ssh
#公钥内容输出到相应文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

使用sftp将id_rsa和id_rsa.pub下载回来并注意保存好,删除服务器上的这id_rsa和id_rsa.pub文件个文件

rm -rf ~/.ssh/id_rsa*

3.切换回root用户,并修改权限

su root
#将新建立的公钥文件属性设置为400
chmod 400 /home/laolee/.ssh/authorized_keys
chmod 500 /home/laolee/.ssh

修改sudo配置文件

vi /etc/sudoers

找到

root    ALL=(ALL)       ALL
#后面加入一行
laolee ALL=(ALL)      NOPASSWD:ALL
#(laolee用户登录之后 免密码sudo -i切换到root)
wq! 强制保存(因为只读)

4.修改ssh端口号 (修改了要记下来哈)

更改端口号需要谨慎,看看是否有开启防火墙,更改端口前防火墙需要添加端口

vi /etc/ssh/sshd_config

Port 34678

5.用下载回来的密钥对 测试一下看看是否ok了

6.如果ok了 那么再次修改ssh配置文件 禁用ssh用户登录

PermitRootLogin no <- 禁止root登陆
PasswordAuthentication no <- 禁止使用密码登陆
PermitEmptyPasswords no <- 禁止空密码登陆
重启
service sshd restart

7.修改sshd服务器的配置文件/etc/ssh/sshd_config的读写权限,对所有非root用户设置只读权限,防止非授权用户修改sshd 服务的安全设置。

chmod 644 /etc/ssh/sshd_config

有的文章会提到,需要将/etc/ssh/sshd_config中的 

RSAAuthentication yes ,
PubkeyAuthentication yes,
AuthorizedKeysFile .ssh/authorized_keys

三行注释取消掉,即让它生效.但我并没有对这三行取消注释,依然是可以登录的。这三个参数默认就是生效的。