用ssh-keygen创建公钥(如果之前已经生成过了,忽略这一步)
$ ssh-keygen -t rsa -P ''
# -P表示密码,-P '' 就表示空密码,也可以不用-P,这样要敲3次回车,-P就一次
公钥生成后,可以在~/.ssh下查看id_rsa是生成的私钥(我是不会告诉你私钥是不能轻易告诉别人的),id_rsa.pub是生成的公钥,
公钥生成好后,要把公钥拷贝到远程服务器上
# 这里以sandbox为例
# 先把本地生成的公钥上传到sandbox上,lhs_id.pub是自己取得名字
$ scp ~/.ssh/id_rsa.pub isuwang@*.*.*.*:lhs_id.pub
此时需要先手动ssh到sandbox上(老规矩,先 ssh isuwang@...,然后输入密码),在~目录下,可以看到刚才上传的公钥文件lhs_id.pub
接着进入~/.ssh目录,目录下会有一个authorized_keys的文件
如果你是第一个吃螃蟹的人,可能目录下还没有这个文件,那需要创建该文件,并设置访问权限:
$ touch authorized_keys
$ chmod 600 authorized_keys
然后把lhs_id.pub的内容 追加 到 authorized_keys。注意,最好先备份一下authorized_keys,万一小手一抖操作错了,把别人上传的公钥也搞没了的话,可不是人人都承担得起后果。备份:$ cp -f authorized_keys ../authorized_keys_bk
cat ~/lhs_id.pub >> ~/.ssh/authorized_keys
至此,接下来就是见证奇迹的时刻了。回到你本地的终端,$ ssh isuwang@...,然后回车,然后就没有然后了......
如果还是觉得要记住这个该死的ip还是有些艰难,可以设置一个别名
$ alias sshsandbox='ssh isuwang@*.*.*.*'
从此以后,远程到sandbox4就只需要:
$ sshsandbox4
但是!!!设置的别名仅在当前终端有效。当然,可以设置永久别名,不同平台方法略有不用,就自行百度吧。
更高级的方法:
# 在~/.ssh目录下新建一个名为config的文件(如果不存在的话)
$ vi config
## 然后插入以下内容
Host sandbox
User isuwang # 登录到sandbox的用户名
HostName *.*.*.* # 这里写sandbox的ip或域名
Host weihu
User weihu
HostName *.*.*.* # 写维护机的ip或域名
## 如有更多,自行继续按照以上格式写入... #号以及后面的内容保存前请先删掉
保存并退出vi,然后要远程到sandbox:
$ ssh sandbox4
要远程到weihu机:
$ ssh weihu
SSH穿越跳板机
你若少输一次密码,便是晴天,更何况是两次。
这里以sandbox1为例。要远程到sandbox1,首先你得先ssh到跳板机,然后在从跳板机ssh到sandbox1。
还记得~/.ssh下的config吗? 没错,是它,是它,就是它。
vi config
# weihu 如果之前已经有weihu机的配置,这里就不需要重复配置了
Host sandbox1
User weihu
HostName *.*.*.*
# 配置sandbox1
Host sandbox1
User isuwang
HostName *.*.*.* # 此处应是sandbox1的ip或域名
ProxyCommand ssh -W %h:%p sandbox