linux下ssh公钥验证的设置和远程登录

tinylion 发布于1年前 阅读12466次
0 条评论

使用 linux 有一段时间了,最近在服务器上假设了一个 git 仓库,每次提交时都使用密码实在是比较反人类,因此就特意研究了一下如何使用 ssh密钥 来登录服务器。

公钥和私钥的生成

ssh-keygen 命令专门是用来生成密钥的。该命令有很多选项,这里列出了最基本的四个:

  • -t 用来指定密钥类型( dsa | ecdsa | ed25519 | rsa | rsa1 );

  • -P 用来指定密语

  • -f 用来指定生成的密钥文件名

  • -C 用来添加注释

ssh-keygen -t rsa -P 123456 -f host -C 'my host key' 意思就是新建了密语为 123456 注释为 my host key 文件名为 host 的密钥。此命令会生成 host 和 host.pub 两个文件,前者为 私钥文件 ,后者为 公钥文件 。如果你想免密登录的话,请将密语设置为空。

将公钥部署到服务器

上一步生成了公钥和私钥后,需要将公钥部署到服务器并用私钥登录。因此首先需要将创建的公钥上传到服务器。使用 scp 或者你的工具将公钥上传到服务器并将文件内容追加到 ~/.ssh/authorized_keys 中。例如:

#在本机上执行此命令,上传公钥
scp -P your_port host.pub user@hostname:/tmp
#在服务器上执行此命令,追加到authorized_keys
cd /tmp && cat host.pub >> ~/.ssh/authorized_keys

更改服务器配置

打开 /etc/sshd_config 文件,将如下的配置打开:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

重启 sshd , service ssh restart 或者 systemctl restart sshd.service 。重启之后,服务器已经支持远程 ssh 连接了

连接服务器

本人是通过 ssh 命令来远程连接服务器的,通过 ssh -p your_port username@domain -i your_private_certification 命令,就可以连接到服务器了。如果你是通过 xshell 或者 putty 来连接的话,导入你的私钥并连接就可以了。

其他

如果你想只允许服务器通过公钥和私钥的方式来连接服务器的话,可以将服务器配置文件 /etc/ssh/sshd_config 中的 PasswordAuthentication yes 改为 PasswordAuthentication No ,不过在重启 sshd 时不要关闭当前的连接,确认通过私钥能连接到服务器才可以关闭。否则,一旦私钥连不上,密码连接方式又被禁用了,恐怕你就要告别你的服务器了。

查看原文:linux下ssh公钥验证的设置和远程登录

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。