# Linux使用ssh密钥登录

首先在vscode下载remote-ssh相关插件

# 参考链接:

VSCode 配置 Remote-SSH 远程开发 (opens new window)

# 在服务器上安装公钥

键入以下命令,在服务器上安装公钥:

cd .ssh
cat id_rsa.pub >> authorized_keys
1
2

# 配置SSH密钥登陆

用户目录下的 .ssh 文件夹内的 id_rsa 和 id_rsa.pub 两个文件,分别对应为私钥和公钥。将 id_rsa.pub 文件中的内容复制到你远程主机用户目录下 .ssh 文件夹内名为 authorized_keys 的文件中即可。

或者将id_rsa.pub复制到.ssh目录下,然后执行

cat id_rsa.pub >> authorized_keys
1

# 遇到的问题

  • 用ssh-keygen生成密钥的时候,如果本地已经存在id_rsa,id_rsa.pub 文件,可以直接使用.

  • 如果服务器不支持密钥登陆,则需要开启.参考链接:设置SSH通过密钥登陆 (opens new window)

    vim /etc/ssh/sshd_config
    #修改如下内容
    RSAAuthentication yes
    PubkeyAuthentication yes
    
    1
    2
    3
    4
  • 完成以上操作后,使用root用户可以正常登陆,但是用普通用户登陆仍然要输入密码

    这里的原因是.ssh目录与authorized_keys文件的权限不能太大,像766这种肯定是无法登陆的.

    于是我对照root用户下的权限,改成了700,测试发现可以登陆了

    注意: .ssh目录权限改为700,authorized_keys 权限改为600

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

# /etc/ssh/sshd_config配置

PasswordAuthentication no	#禁用密码登陆
1

# authorized_keys文件

远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

Github密钥生成看这里! (opens new window)

# rsa和ed25519

ssh rsa 和ed25519都是ssh key的类型,具体可以看这篇文章 (opens new window)

ed25519比rsa更先进安全,优先选择ed25519,其次rsa