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服务器
分两种情况:
- 如果远程服务器的~/.ssh目录下存在authorized_keys文件,那么需要使用Filezilla将其下载到本地,然后把 id_rsa.pub的内容追加到authorized_keys文件末尾,保存后上传覆盖远程的文件。
- 如果远程服务器的~/.ssh目录下不存在authorized_keys文件,那么直接拷贝一份id_rsa.pub并命名为authorized_keys,保存后上传到远程~/.ssh目录下。
登录远程Linux服务器
配置好密钥对之后,在终端执行ssh <用户名>@<ip>
就可以实现登录远程Linux服务器了。如果服务器修改ssh端口,那么还需要带上端口信息,ssh -p <端口号> <用户名>@<ip地址>
。
如果你也觉得这样麻烦的话,那么推荐你使用下面的快捷方法。打开~/.ssh/config
文件,添加服务器信息,如下:
具体格式如下:
Host alias #自定义别名,方便你识别是哪一台服务器
HostName hostname #替换为你的ssh服务器ip或解析到该ip的域名
Port port #ssh服务器端口,默认为22
User user #ssh服务器用户名
IdentityFile ~/.ssh/id_rsa #第一个步骤生成的公钥文件对应的私钥文件
这一步配置完成后,在终端直接执行ssh <别名>
就可以登录远程服务器。比如我在自己的终端,执行ssh mcos
就搞定了。