使用SSH也不是绝对安全的,因为不可能阻止别人暴力破解你的密码。如果密码过于简单,那更容易被攻击了。
保护主机安全是使用VPS的必修课。大多数时候,我们都使用SSH来管理系统。这时如果密码很长很复杂,谁都不乐意,不仅是登录,每次sudo都要打密码(我可不会用root裸奔)。所以较好的解决方案是使用不那么复杂的密码,而登录不输密码。两全其美。
- 生成ssh密钥对: ssh-keygen -t rsa
默认key目录是~/.ssh 其中id_rsa是私钥不可以公开,id_rsa.pub是公钥可以随意公开,然后也是需要传给目标服务器的。
- 将公钥加入目标主机的~/.ssh/authorized_key
这里方法就好多了,最简单的是先ssh过去,然后vim ~/.ssh/authorized_key,再粘帖。不管这么低端的,来几个酷炫的。-
scp -P 22 ~/.ssh/id_rsa.pub [ip]:id_rsa.pub然后再ssh到目标主机,执行
cat id_rsa.pub >> ~/.ssh/authorized_key
还是麻烦啊。 -
cat ~/.ssh/id_rsa.pub | ssh -p 22 user@ip "cat >> ~/.ssh/authorized_keys"
好了,输完密码就能成功配置,下次ssh就不需要再打密码了。这个方法牛X啊,ssh居然还有这种用法,完全不知道啊。 - ssh-copy-id -p 22 user@ip 最简单的。。。
-
scp -P 22 ~/.ssh/id_rsa.pub [ip]:id_rsa.pub然后再ssh到目标主机,执行
cat id_rsa.pub >> ~/.ssh/authorized_key
到此,目标主机已经不用输密码就可以登录了。然后还有一些技巧可以提高安全性。修改ssh配置文件:
- 修改ssh的默认端口,默认为Port 22,可以修改为其他的,以后登录时加上-p 或者 -P
- 不允许密码登录。PasswordAuthentication no (要时刻备份密钥,否则没了就跪了)
- 不允许root登录。PermitRootLogin no
- 上面是基本的,还有其他的自己适当调整
另外android也有很好的ssh客户端,叫server auditor,支持无密码登录内置key生成工具,可以试一试,也可以防止丢了一个私钥,做个备份。
参考链接:
但很多时候是不允许在服务器上编辑是否允许非密码访问啊,这时候在本地用 ssh-copy-id username@host 后就能免密码登陆了。我记得是有正规的方法可以做快捷键的,但我一般比较懒,就直接编辑一个 ~/.bashrc ,设个 alias~
文中也提到了,ssh-copy-id确实是最简单的,但我一般用复制的办法。。
没有root权限确实没办法阻止非密码访问。
你说的正规方法应该是ssh config,在这篇里面有提到。https://blog.slinuxer.com/2014/10/ssh-trick
哈!