Skip to content

商务合作:vTikTok


公众号:



类似于Github,默认情况下我们是没有公钥和私钥的:

ssh-keygen -t rsa
ssh-keygen -t rsa

这将在您的本地电脑

~/.ssh
~/.ssh

目录中生成一个id_rsa(私钥-本地电脑位置)和 id_rsa.pub(公钥-远程服务器位置)文件。

远程CentOS目录

我们需要把id_rsa.pub中的内容:

ssh-rsa xxxx= code.deeper@gmail.com
ssh-rsa xxxx= code.deeper@gmail.com

方式一:复制id_rsa.pub全部内容并填到authorized_keys文件中(Github则是SSH keys中在个人设置中填写) 方式二:同上,ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host 方式三:CentOS的后台-SSH密钥-创建密钥,会生成一个公钥自动放入到如下目录(不需要我们手动操作),并且会生成一个pem文件(存放了私钥,ssh_login.pem文件通常是私钥文件)

~/.ssh/authorized_keys
~/.ssh/authorized_keys

您将需要使用 -i 标志与 ssh 指定您要使用此新密钥而不是 id_rsa:

ssh -i ssh_login.pem root@remote_host
ssh -i ssh_login.pem root@remote_host

关闭密码登录(腾讯云打开SSH密钥登录的时候就已经关闭了密码登录)

当出现:Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 说明SSH服务器已经没有启用密码登录选项了。

如何关闭密码登录

  1. 使用 root 权限登录服务器
  2. 打开配置文件:sudo nano /etc/ssh/sshd_config
  3. 找到以下行:PasswordAuthentication yes
  4. 将 yes 改为 no
  5. 保存并关闭文件
  6. 重启 SSH 服务:sudo service ssh restart

更改完配置文件后,密码登录就已经关闭了。这样就只能使用私钥登录了。

不想每次都填写ssh -i ssh_login.pem,怎么样更简单?

  1. 首先启动 ssh-agent:eval "$(ssh-agent -s)"
  2. 添加私钥文件到 ssh-agent: ssh-add ssh_login.pem
  3. 现在可以使用 ssh 命令而不需要使用 -i 选项:ssh user@remote_host

这样就可以避免每次都输入私钥文件路径了。ssh-agent 会管理您的私钥,并且在每次登录时使用它。

另外,如果你想让 ssh-agent 开机自启动,可以将上面的 eval "$(ssh-agent -s)" 加入到 ~./bashrc 或 ~./bash_profile 中。

这样,每次登录系统时就会自动启动 ssh-agent并且加载添加的私钥,可以避免每次都输入私钥文件路径了,更加方便。