Mac通过ssh密钥对登录远程Linux服务器

ssh登录Linux服务器通常有两种方法,第一种是通过账号密码登录,第二种是密钥对登录。

Windows环境下,我使用第一种方法比较多,因为有类似Xshell这样的工具,可以帮你记住账号密码,使用起来十分方便。而且,Xshell针对家庭和学校用户,有免费版本,不存在授权问题,可以说是十分贴心的。另外,配合他们家的Xftp使用,文件的上传下载也很方便。所以,如果你用的Windows系统,那么我会强烈推荐你使用Xshell和Xftp。

Mac用户就没有这么幸运了,因为Xshell和Xftp没有Mac版本。当然,你还可以用一些其他替代产品,比如SecureCRT,只不过是需要授权付费的,你可以选择用破解版。另外,FinalShell是免费软件,而且据说是由国人开发,支持Windows、Mac、Linux,评价也还不错。

那为什么现在我还要讲第二种登录ssh的方法呢?因为我个人不喜欢SecureCRT,FinalShell官网又看起来很简陋,我用着觉得不踏实。所以我现在的做法是,远程管理Linux用Mac自带的终端加上ssh密钥对,文件上传下载用Filezilla。

要用密钥对登录,首先就需要生成密钥对文件。

生成密钥对

打开Mac终端,执行ssh-keygen命令。

ssh-keygen -t rsa -C  'youremail@domain.com'

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

执行过程中会提示输入密码两次,如果不想在使用公钥的时候输入密码,可以回车跳过,密钥默认保存位置在 ~/.ssh(即当前用户家目录下的.ssh目录)目录下,打开后会看到私钥文件 id_rsa 和公钥文件 id_rsa.pub。

公钥复制到Linux服务器

分两种情况:

  1. 如果远程服务器的~/.ssh目录下存在authorized_keys文件,那么需要使用Filezilla将其下载到本地,然后把 id_rsa.pub的内容追加到authorized_keys文件末尾,保存后上传覆盖远程的文件。
  2. 如果远程服务器的~/.ssh目录下不存在authorized_keys文件,那么直接拷贝一份id_rsa.pub并命名为authorized_keys,保存后上传到远程~/.ssh目录下。

登录远程Linux服务器

配置好密钥对之后,在终端执行ssh <用户名>@<ip>就可以实现登录远程Linux服务器了。如果服务器修改ssh端口,那么还需要带上端口信息,ssh -p <端口号> <用户名>@<ip地址>

如果你也觉得这样麻烦的话,那么推荐你使用下面的快捷方法。打开~/.ssh/config文件,添加服务器信息,如下:
WX20200421-233711@2x.png

具体格式如下:

Host            alias            #自定义别名,方便你识别是哪一台服务器
HostName        hostname         #替换为你的ssh服务器ip或解析到该ip的域名
Port            port             #ssh服务器端口,默认为22
User            user             #ssh服务器用户名
IdentityFile    ~/.ssh/id_rsa    #第一个步骤生成的公钥文件对应的私钥文件

这一步配置完成后,在终端直接执行ssh <别名>就可以登录远程服务器。比如我在自己的终端,执行ssh mcos就搞定了。

标签: ssh, Mac, 密钥对

添加新评论