ssh 配置私钥登陆服务器

ssh 配置私钥登陆服务器

  • 首先服务器和本地客户端都要安装 ssh

1. 证书登录

  • ssh 配置私钥登陆服务器
  • 每次都需要输入密码很麻烦,配置 ssh 连接,但是这样子可能会导致安全问题
    • 可以在生成公钥/私钥的时候加入密码

(1) 生成公钥私钥对

  • 客户端或者服务器利用命令行生成
1
ssh-keygen -t rsa
  • 如果不想设置密码的话,则直接一路回车就好

    • 第一次回车,设置生成文件的路径
      • 默认是 C:\Users\你的用户名\.ssh\id_rsa
      • 建议使用默认目录,放到其他用户可访问目录的时候,连接的时候会报安全问题
    1
    2
    3
    4
    5
    6
    7
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions for 'id_rsa' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.
    Load key "id_rsa": bad permissions
    • 后面两次回车是设置密码

(2) 服务器配置

  • 上传公钥文件到服务器
    • id_rsa.pub

上传

  • scp 命令
1
scp -P portNum 需要上传的文件路径 服务器用户名@服务器IP:服务器上的目录
  • 例如
    • 我的电脑用户名为 ABC
    • 服务器的用户名为 abc,IP 地址为 12.34.56.789
    • 需要上传刚刚生成的 id_rsa.pub 文件到服务器的用户根目录
1
scp -P 22 "C:\Users\ABC\.ssh\id_rsa" abc@12.34.56.789:~/
  • 如果使用 MobaXterm的话,直接拖进去就行

配置

  • 刚刚把 id_rsa.pub 上传到了用户根目录
1
cat  ~/id_rsa.pub >> ~/.ssh/authorized_keys
  • 可以查看端口号
    • 默认为 22
    • 如下命令可以输出配置文件中含有 Port 信息的行
1
grep Port /etc/ssh/sshd_config

(3) 客户端登陆

命令行

1
ssh -i "id_rsa文件目录" 服务器用户名@服务器IP

配置 vscode

  • 安装插件

  • 配置文件

  • 新建一个配置文件(路径任意)
  • 配置如下
1
2
3
4
5
Host 随便起个名字
HostName 服务器 IP
Port 服务器端口号(默认22)
User 服务器用户名
IdentityFile "刚刚生成的私钥路径(id_rsa)"

2. 参考资料