SSH 配置自动登录
https://harttle.land/2016/09/14/ssh-auto-login.html
配置过程
客户端需要有一对密钥,公钥发送给服务器保存(在authorized_keys文件中)用来验证身份, 私钥用来解密服务器发来的信息。 熟悉RSA算法的朋友一定知道解密还需要对方公钥,服务器公钥是在初次建立连接时接收的, 被保存在authorized_keys下。在此可以看到 SSH 协议中,服务器和客户端的角色是对称的。
客户端生成密钥
在建立连接前先要有一对公私密钥。可以查看 ~/.ssh 目录,如果没有可使用 ssh-keygen 生成。
查看这里有没有一个名为id_rsa.pub的公钥文件
ls ~/.ssh
如果没有,则生成一对。一路确定即可。
ssh-keygen
id_rsa.pub 是公钥,用来标识当前客户端的身份,是可以随便发送给任何人的, 比如Github是 SSH Key就是这个。 id_rsa是私钥,可理解为解密用的密码,不可发送给任何人。
SSH 安装
首先服务器应当安装有openssh,如果没有请自行安装:
arch
pacman -S openssh
ubuntu
apt-get install openssh
RHEL
yum install openssh
对于有些发行版,sshd不会默认运行。如果你的发行版使用systemd服务管理器, 可以使用sysctl来管理sshd守护进程:
启动SSH守护进程
systemctl start sshd
开机自启
systemctl enable sshd
关于systemd的使用可参考:使用systemd管理Node.js应用
服务器配置
为你要登录的用户(比如harttle)创建/.ssh目录以及/.ssh/authorized_keys文件。 并设置正确的权限(否则SSH会拒绝连接):
先登录harttle用户,重新以harttle登录,或sudo -u harttle切换
确认当前用户为harttle
whoami
创建.ssh目录
mkdir ~/.ssh
chmod 700 ~/.ssh
创建对方公钥文件
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
添加公钥到服务器
切换回客户端,拷贝客户端公钥到服务器的authorized_keys文件:
在windows终端运行:
cat ~/.ssh/id_rsa.pub | ssh root@23.94.203.233 ‘cat >> .ssh/authorized_keys’
两次运行: ssh root@23.94.203.233 就会自动登陆了。现在服务器拥有你的公钥了,再次登录服务器时服务器不会再询问你的密码了: