修改默认SSH 端口
一般的商家默认的SSH端口是22,搬瓦工等商家除外,是给定的随机高位端口。默认22端口作为SSH端口带来的问题是有些人会使用肉鸡进行弱端口扫描,一旦扫描成功,立即进行弱管理员名称(很多为admin、root)和弱密码尝试爆破。所以很多人在长期不登录VPS之后常常会发现输入lastb
之后有很多尝试登陆但是fail的例子。
好多人说我们可以使用denyhost
这样的工具来防止,一旦检测到同一个ip多次登录失败,就ban掉。但是对于强迫症患者和完美主义者来讲,最治本的方法还是直接修改SSH端口。
修改/etc/ssh/sshd_config
文件:
123456 | #进入SSH配置文件vi /etc/ssh/sshd_config#找到以下内容,去掉原本注释并修改端口号Port 6666#重启ssh服务service sshd restart |
---|---|
使用 RSA 密钥对登陆 SSH
密钥对生成
如果你使用的是Windows,请借助PuTTYgen来生成密钥对:
密钥对上传
对于macOS和Linux用户,直接输入ssh-copy-id -i ~/.ssh/id_rsa -p port<USERNAME>@<HOST>
即可将私钥上传至服务器。
对于Windows用户,通过PuTTYgen获取密钥之后,将其内容复制到.ssh/authorized_keys
里面即可(PuTTY导出的密钥有时候会分行,请注意删除多余的换行符,authorized_keys里面可以放多个密钥,一行一个分开即可)。
仅允许密钥登录
做完以上步骤,想要登录我们的VPS只剩下两种途径了。一个是得知你新建的普通用户名+密码,另一个是在自己生成密钥的电脑上面通过新建的普通用户名登录。为了进一步保险起见,我们继续设置仅允许密钥登录。
在服务器上进入 /etc/ssh/sshd_config
修改如下内容:
#启用公钥认证 PubkeyAuthentication yes
#禁用密码认证 PasswordAuthentication no
#不允许空密码登陆 PermitEmptyPasswords no
#RSA认证 RSAAuthentication yes
#验证文件路径 AuthorizedKeysFile .ssh/authorized_keys
最后
#重启SSH服务 service sshd restart |
进一步简化SSH登录步骤
到此我们已经可以在本机上面通过用户名+密钥的方式登陆了,省去了输入密码的步骤并且在一定程度上面提升了安全性。对于macOS和Linux用户,我们还可以借助SSH config
进一步简化我们的登录步骤。
对于一个有着很多VPS,不愿意去记冗长的ip和域名的用户来讲,除了选择一个好用的SSH客户端软件之外,SSH config
也可以发挥其自身的优势。
SSH config是Open SSH 客户端配置文件,允许你以配置项的形式,记录各个服务器的连接信息,并允许你使用一个定义好的别名来代替其对应的 ssh 命令参数。
首先在.ssh目录下面创建一个config文件:vi .ssh/config
接着在其中填写上如下信息并保存:
12345 | Host myhost Hostname example.server.com Port 6666 User username Identityfile ~/.ssh/id_rsa |
---|---|
一个配置中可以添加多个Host主机,使用时只需在终端输入ssh myhost
即可,省去了输入ssh -p port -i 私钥路径 username@your ip/hostname
的繁琐步骤。
HostName
需要ssh连接过去的主机名,一般是IP地址,也可以用%h
来替代命令行参数。
User
登录主机的用户名
IdentityFile
认证证书文件,默认位置是~/.ssh/id_rsa
, ~/ssh/id_dsa
等,如果采用默认的证书,可以不用设置此参数,除非你的证书放在某个自定义的目录,那么你就需要设置该参数来指向你的证书。
Port
SSH访问主机的端口号,默认是22端口,同上,只有在非默认情况下才需要设置该值。
其他
以上是常用的参数,其他参数可以在命令行通过man ssh_config
来查看。
推荐的SSH客户端软件
- Terminal.app:macOS和Linux自带,不解释
- Finalshell:我曾经和开发组成员之一有过一段时间的交流,他向我安利了这款神器。支持macOS、Windows、Linux,自带sftp、内网穿透、VPS性能监控(cpu内存网络io等)、海外服务器加速。(本质是挂代理上SSH,降低断线的风险)我个人也十分推荐,并且支持多VPS管理,十分方便,功能强大
- Xshell:Windows上面一款强大的SSH工具,国区的销售权被毒瘤马克丁拿到了(口区)
- Putty:Windows上面免费的SSH工具,能用
- Hyperapp:一款较为全能的SSH客户端软件,适用于iOS。除了可以做到SSH以及各种监控外,这个软件还提供了一些环境以及代理的一键安装功能,十分适合新手了。现在在美区有售
- Termius:全平台支持的SSH工具,功能中规中矩。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!