在win环境习惯了用xshell套件进行ssh登录后,再在Ubuntu和Mac环境登录远程服务器会变得很不习惯,很难找到一个和xshell对应重量级的可视化工具。
因为完全可以通过系统自带的终端工具通过ssh命令来进行登录,而且丝毫不逊色于xshell这类工具。本篇记录如何在Mac和Linux环境下配置ssh的快速免密登录。

认识ssh命令登录

正常情况下在Mac和Linux的终端中可以通过如下命令来远程ssh登录:

ssh myuser@x.x.x.x
输入登录密码

但是在实际使用中会存在两个方面的不便

  • 需要记下服务器的用户名、服务ip和密码
  • 每次连接都需要输入用户名、服务ip和密码

下面来针对这两个问题来进行配置,以达到一行命令快速登录的效果

配置ssh登录别名

~/.bashrc~/.profile,或~/.zshrc文件中追加快速登录命令别名

alias ssh-to-remote='ssh myuser@x.x.x.x'

定义了一个叫做ssh-to-remote的命令实现用户myuser快速登录服务器ipx.x.x.x,这里的命令别名、用户名、服务ip都可以跟进实际情况进行调整。

通过在终端输入ssh-to-remote来代替输入ssh myuser@x.x.x.x的登录命令,免去了重复输入用户名和ip的问题。目前为止通过别名登录还是需要输入密码的。

配置公钥实现免密登录

操作的核心是将本地的公钥追加到服务器的authorized_keys文件中。

首先检测本地是否存在公钥文件~/.ssh/id_rsa.pub,若没有,使用下面的命令生成公钥:

ssh-keygen -t rsa

将本地id_rsa.pub文件的内容追加到服务器的/home/myuser/.ssh/authorized_keys文件。
若是要用root用户免密登录,则需要追加到服务的/root/authorized_keys文件。
服务器对应目录中如果不能存在authorized_keys文件直接创建即可。
authorized_keys需要是600的读写权限

使用

在本地使用ssh-to-remote命令即可快速实现免密登录。
若存在多个服务器,本地可以依照此方法定义多个别名,如:

alias ssh-to-server1='ssh root@192.168.1.110'
alias ssh-to-server2='ssh root@192.168.1.120'
alias ssh-to-server3='ssh ubuntu@192.168.1.130'
alias ssh-to-server4='ssh myuser@x.x.x.x'
....

这种情况下,根本不用记忆每个服务器的用户和ip,只需要键入ssh-to-然后tab键,终端就会列出所有可用的别名,根据需要补全命令登录即可。