linux服务器使用ssh秘钥登录以及禁用ssh密码登录。

0. 使用密钥登录

任意电脑(服务端 客户端都可以)执行:

1
ssh-keygen

将产生密码电脑的~/.ssh/id_rsa.pub (活着现成的公钥) 中的内容复制到 服务器对应账户下的 ~/.ssh/authorized_keys,私钥存在主机上的~/.ssh/id_rsa
也可以对每个服务器账户单独配置私钥, 编辑~/..ssh/config, 结尾加入:

1
2
3
4
5
6
Host $configname
HostName $IP
User $USERNAME
Port $PORT
PreferredAuthentications publickey
IdentityFile $PATH_OF_RSA

1. 基本修改

编辑sshd文件:

1
sudo vim /etc/ssh/sshd_config

找到 PermitRootLogin 改为禁用密码登录(取消注释 )

1
2
PasswordAuthentication no 
ChallengeResponseAuthentication no

2. 额外修改

如果是Ubuntu,则还需要额外修改:

1
sudo vim /etc/ssh/sshd_config.d/50-cloud-init.conf

修改为以下设置:

1
PasswordAuthentication no

3. 权限设置

一般默认权限不需要修改,但如果用户手欠修改了权限导致登录不上,则在该用户目录下进行以下权限操作:

1
2
3
4
chown -R $username:$username .ssh #修改所属组和用户
chmod 755 .ssh #修改权限
chmod 755 ~/.ssh/authorized_keys #修改权限
chmod 750 ./ #修改用户目录权限 (大坑 网上查不到)