使用ssh登陆服务器
工作中,需要经常登陆到开发机上,一般我们输入
ssh username@example.com(例如: ssh root@47.114.48.244)
之后,会提示输入密码,即可完成登陆。
每次都输入这么多,太麻烦,我用如下方法快速方便地登陆:
第一步,先省去输入密码操作,方法如下:
在自己的机器上
使用ssh-keygen
生成一对公钥和私钥
ssh-keygen -t rsa -C 'your email address'
按照提示,默认会生成 ~/.ssh/id_rsa, ~/.ssh/id_rsa.pub
然后我们需要将公钥id_rsa.pub添加到服务器的authorized_keys,这样,就可以免密码登陆了。
用老办法登陆到服务器
上,在服务器上如下操作
cd ~/.ssh
vim authorized_keys
将上步在本地机器上生成的id_rsa.pub内容附着到服务器上的authorized_key文件后面(如果原文件有内容的话),保存。
这里,还需注意服务器上.ssh文件夹及authorized_key这个文件的访问权限。
chmod 600 authorized_keys
chmod 700 .ssh
一切ok,现在使用ssh username@example.com,不需要输入密码了,直接就登陆进去了!
第二步,省去输入username@example.com,此步骤在本地机器上操作
方法较多,可以在.bashrc中添加alias;也可以写一个.sh脚本文件,执行一下该文件就行。
但是这里,我使用ssh config方法来完成。具体如下
cd ~/.ssh
vim config
在config文件里,添加如下代码
Host dev
hostname example.com
user username
现在在console试试
ssh dev
就可以直接成功登陆了!
因为上面第一步,我们在服务器的authorized_keys添加了自己的公钥,所以登陆很方便;但有些时候,我们没有权限做这个事情,比如登陆公司relay机等,还是得输入密码。一个console不够用,我们想新开一个console tab(如我用iTerm, command+T),这个时候我们在新窗口里面ssh login时,又提示输入密码,很烦。下面的办法可以解决!
在本地机器上,还是打开.ssh/config文件,添加如下几行
Host *
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster auto
这样,我们看到,当第一次连上服务器后,就会在.ssh下生成一个master-usrname@example:port的文件,此后,建立同样的新连接会共享这个文件,不需要输入密码了。
经过这些配置,现在登陆起来是不是方便多了?