在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
键,终端就会列出所有可用的别名,根据需要补全命令登录即可。