本地终端配置免密登录服务器

387 阅读1分钟

自动登录ssh的相关设置,省去了每次都要输入密码的繁琐。对于需要频繁ssh到服务器上进行工作的人来说很有必要[1]
步骤:

  1. 首先用账号ssh登录到server上,并执行:

    ssh-keygen
    

    ssh会生成加密对与秘钥。生成时按照指令输入即可,也可全都按Enter略过。

  2. 进入.ssh目录,可以看到刚才生成了两个文件xxx_rsaxxx_rsa.pub。将公钥xxx_rsa.pub的内容加入authorized_keys文件:

    cat xxx_rsa.pub >> authorized_keys
    
  3. 回到local机器上,将私钥拷贝至.ssh目录并改名(如server_key):

    cd .ssh
    scp my_account@server_ip:~/.ssh/id_rsa .
    mv id_rsa server_key
    
  4. 设置ssh使其自动找到正确的秘钥:

    echo "Host server_name" >> config  # server_name is the name for your server【这里需要配置你服务的名字,将来ssh登录的时候需要】
    echo "Hostname server_ip" >> config  #server_ip is the ip of your server【目标服务器ip地址】
    echo "IdentityFile ~/.ssh/server_key" >> ~/.ssh/config
    

    -config最后的格式应该下面这种,要不然ssh读取配置的时候不会认识

    Host dev
    HostName xx.xxx.xx.xx
    User your_username
    Port 22
    IdentityFile ~/.ssh/id_rsa
    
    
  5. 所有配置完成后ssh登录server只需要输入:

    ssh my_account@server_name
    
  6. 如果登录遇到如下错误问题

    Permissions 0644 for '/Users/my_account/.ssh/server_key' are too open
    

    只需要

    chmod 400 server_key