远程主机登录
Table of Contents
这里记录一下,如何登录远程主机,以及如何更方便登录。
1. 最普通的方法
例如我们有一个远程的主机,IP 地址为 52.10.199.62 ,username 为 ubuntu。
我们就可以通过 ssh:
ssh ubuntu@52.10.199.62
然后提示输入 用户名和密码。有时候密码很长的话,这一步就很不方便了。 我们就想能不能简化这种操作。确实是可以的。
2. 使用 SSH key 来登录
首先生成一个 ssh key,如果你想用 ~/.ssh 目录下的 key 也可以。
ssh-keygen -t rsa
然后会提示你选择一个文件去存储这个 key,默认是覆盖 ~/.ssh/id_rsa 这个文件。 一直按回车就好。
然后把生成的 public key 注册到服务器上。
ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@52.10.199.62
这一步完成了,我们就可以直接使用这个来登录
ssh ubuntu@52.10.199.62
有个地方需要注意,如果你不是使用默认的 .ssh/id_rsa 这个 ssh key,而是新起的一个名字,例如在~/.ssh 目录下叫 test.key,同时还会生成一个叫 test.key.pub 的 public key。
这时你要这样来登录
ssh -i ~/.ssh/test.key ubuntu@52.10.199.62
是不是还很麻烦?确实是的。 我们还可以简化操作。
3. 配置 ssh config
在上面的例子中,我们需要记住很多的东西。尤其是 ssh private key 还有 ip 地址这种东西。 如果你听说过 ssh 的 config,应该就知道如何做了。
在 ~/.ssh/config 中,我们添加如下配置
Host test
HostName 106.75.57.80
IdentityFile ~/.ssh/test.key
User ubuntu
下面我们就可以这样登录了
ssh test
是不是简化了很多?这样就非常好了。 如果当你需要登录很多主机的时候,这种方式真的非常好。这让你从特定的 ip 中解脱出来了。
4. 还可以更简化?
到上面其实已经足够简单了,但是我还是太懒了,一个单词都不想多输。
于是,我打开了 .zshrc (因为我使用的是 zsh,如果你使用的是 bash,应该是 .bashrc 文件),添加了下面一句
alias lg='ssh test'
下次,我们直接输入 lg 就登录了。哈哈,大功告成。
5. 换种思路
如果说我们可以点点就能实现这种功能不知道你信吗?前提是你要使用 iTerm2,可以看这里了解 iTerm2。 我们首先在在 iTerm2 中添加一个新的 profile,如下选择 Command,输入命令。
下次我们想要登录远程主机的时候直接打开这个新建的 profile,就会自动登录远程主机。这种方式会让你有种 ”iTerm2 还可以这样玩?“的感觉。
6. 一个非常有用的配置[update]
假如我的使用场景是这样的:在公司里,我需要使用 RSATOKEN + PASSCODE 来登陆公司的服务器,因为 token 每隔几秒就刷新一次,上面的方法就不太好用了。如果我要开 10 个 ssh 连接窗口,难道我要输入 10 次? 这里我知道一个简单的方法,在 windows 下有个工具可以做类似 copy session 的操作,在 mac 下用 iterm 我还没有找到好的方法, 但是可以通过配置一下 ssh config 实现。
做法很简单,在~/.ssh/config 下加入如下的配置:
Host *
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
ControlPersist 600
更多的细节可以看下这个文章: How To Reuse SSH Connection To Speed Up Remote Login Process Using Multiplexing