Mac使用ssh公钥免密登录Linux

ssh登录Linux通常有两种方法:用户名密码登录、用户名公钥登录;
使用用户名密码登录每次都要输入密码,相当麻烦,而使用用户名公钥登录则可以避免这个问题

打开本地终端,执行 ssh-keygen 命令创建密钥对:

ssh-keygen -t rsa -C  'your [email protected]'

-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱,可以省略

生成过程中会提示输入密码两次,如果不想在使用公钥的时候输入密码,可以回车跳过;
密钥默认保存位置在 ~/.ssh 目录下,打开后会看到私钥文件 id_rsa 和公钥文件 id_rsa.pub;
Mac使用ssh公钥免密登录Linux_第1张图片
使用 scp 命令将本地的公钥文件 id_rsa.pub 复制到需要连接的Linux服务器:

scp ~/.ssh/id_rsa.pub 用户名@ip:/home/id_rsa.pub
#如果修改了ssh默认连接端口的话,需要加上端口信息:
scp -P 端口号 ~/.ssh/id_rsa.pub 用户名@ip:/home/id_rsa.pub

在这里插入图片描述
登录服务器,把公钥追加到服务器ssh认证文件中:

cat /home/id_rsa.pub >> ~/.ssh/authorized_keys

在这里插入图片描述
这时候在本地终端中使用用户名和ip登录就不需要密码了:

ssh 用户名@ip
#如果修改了ssh默认连接端口的话,需要加上端口信息:
ssh -p <端口号> <用户名>@<ip地址>

Mac使用ssh公钥免密登录Linux_第2张图片
但是,每次仍然需要输入ssh 用户名@ip,仍算不上最优的解决方案,要是能实现一键登录或一条命令登录最好不过了,下面来看看都有那些解决方法:

  1. 如果你本地终端使用的是zsh,直接给zsh添加一条别名

    echo "alias ssh-to-username='ssh 用户名@ip'" >> ~/.zshrc #将username和hostname替换为你的服务器信息
    source ~/.zshrc   #重新加载更改后的zshrc文件
    ssh-to-username   #使用别名,一条命令即可登录你的ssh服务器
    
  2. ssh本身也提供了解决这个问题的方式,在本地 ~/.ssh/config (若没有该文件,直接新建即可) 配置文件中添加ssh服务器信息,格式:

    Host            name            #自定义别名
    HostName        ip         #替换为你的ssh服务器ip或domain
    Port            22             #ssh服务器端口,默认为22
    User            root             #ssh服务器用户名
    IdentityFile    ~/.ssh/id_rsa    #第一个步骤生成的公钥文件对应的私钥文件
    

    若有多个ssh账号需要配置,只要在~/.ssh/config空一行再写即可

  3. 如果你本地终端使用的是iterm2还可以添加Profile实现一键登录,具体步骤此处略过

你可能感兴趣的:(Linux)