使用密码口令登录服务器会有两个问题:

  • 安全问题,容易产生口令泄漏等安全风险
  • 口令较长,每次都需要输入口令较为繁琐

基于此,总结下解决方案。

口令较长的问题可以用sshpass来解决每次都需要输入长密码的烦恼,但是使用sshpass是极其不安全的,因为所有系统上的用户在命令行中通过简单的 ps 命令就可看到密码。

所以,目前较为安全的SSH登录验证方式还是采用密钥登录。

环境

  • Win 10
  • CentOS 7
  • Windows Terminal等命令行工具

Windows配置

生成SSH密钥

查看用户目录/.ssh 目录,如果有id_rsa.pubid_rsa文件,则此步跳过。

否则执行以下命令生成密钥。

1
ssh-keygen -t rsa

其中id_rsa.pub为公钥,id_rsa为私钥。

CentOS配置

添加公钥

root用户为例,其他用户操作类似,只需要将操作目录换成目标用户目录即可。如用户为zhangsan,则只需要将~/(即/root/)换成/home/zhangsan/就可以。

1
2
mkdir ~/.ssh
touch ~/.ssh/authorized_keys

上传在Win10 生成的公钥文件CentOS 并追加内容到 authorized_keys

1
2
3
scp .\id_rsa.pub root@192.168.0.2:~/
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub

重启SSH

1
systemctl restart sshd

修改目录权限

1
2
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys