配置ssh密钥远程登录服务器
背景
使用账户密码登录远程服务器是不太安全的,更好的方法是用ssh连接服务器。首先需要在常用设备上生成ssh的私钥与公钥,将公钥存放在要连接的服务器中,每次登录服务器会认证保存的公钥与私钥是否匹配,匹配则可以直接登录,这样省去了密码登录的步骤,更快捷且安全。
生成ssh密钥
如果没有生成过ssh密钥,需要在终端(windows一般是在cmd命令框中)运行命令
ssh-keygen
会在~/.ssh/文件夹下生成了两个文件
id_rsa.pub 公钥
id_rsa 私钥
1. 快捷的生成authorized_keys文件方法
进入到~/.ssh目录下,将公钥追加到服务器的认证文件中(服务器的.ssh目录下会生成一个authorized_keys文件)。执行以下命令:
ssh-copy-id <your_username>@<your_ip>
会提示你输入一次密码,如果正确,会显示:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '<your_username>@<your_ip>'"
and check to make sure that only the key(s) you wanted were added.
如果需要给多台服务器认证密钥,就多次执行该命令,只需根据实际情况替换<your_username>和<your_ip>即可。
接下来输入命令
ssh <your_username>@<your_ip>
成功登录,说明配置成功。可以看到.ssh/目录下已经有authorized_keys文件。
2. 普通的生成authorized_keys方法
公钥复制到要登陆的远程服务器上。可以使用scp传输文件。在命令行中输入:
scp ~/.ssh/id_rsa.pub <user_name>@<your_ip>:
将<user_name>替换为你要登录的用户名,<your_ip>替换为要登录的服务器的ip地址。
登录服务器,在.ssh目录下生成authorized_keys
touch ~/.ssh/authorized_keys
该文件包含一系列允许登录该服务器的公钥。
将公钥内容追加到~/.ssh/authorized_keys
中:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
修改权限
修改ssh目录与相关文件的权限,只允许该用户查看
chmod 700 ~/.ssh # 只允许用户读写执行.ssh目录
chmod 600 ~/.ssh/authorized_keys # 只允许用户读写authorized_keys