分享 [解决]无密码登陆 VPS

vincent178 · 发布于 2013年8月17日 · 最后由 blacktulip 回复于 2013年8月17日 · 2437 次阅读
5347

Update: 分享一点东西,学到最多的是楼主呀。谢谢@yesmeck @046569 @doitian @xiaoronglv @blacktulip @bhuztez 论分享的重要性!!!

我也是边学变弄,折腾服务器的管理,感觉要学东西的好多。学了一点就赶紧记录下来,和大家一起分享。

通常登陆服务器我们都是通过SSH的方式。

SSH提供了口令和密钥两种用户验证方式,这两者都是通过密文传输数据的,不同的是,口令用户验证方式传输的是用户的账户名和密码,这要求输入的密码具有足够的复杂度才能具有更高的安全性。而基于密钥的安全验证必须为用户自己创建一对密钥,并把共有的密钥放在需要访问的服务器上。当需要连接到SSH服务器上时,客户端就会向服务器发出请求,请求使用客户端的密钥进行安全验证。服务器收到请求之后,先在该用户的根目录下寻找共有密钥,然后把它和发送过来的公有密钥进行比较。如果两个密钥一致,服务器就用公有的密钥加密“质询”,并把它发送给客户端。客户端收到质询之后,就可以用本地的私人密钥解密再把它发送给服务器。这种方式是相当安全的。

通过密钥登陆SSH需要两个部分的设置。

服务器端

通过ssh-keygen生成一对密钥,-f 是指定key-file这部分应该在客户端完成!!!

deploy@li610-92:~$ ssh-keygen -f ~/.ssh/blog Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/deploy/.ssh/blog. Your public key has been saved in /home/deploy/.ssh/blog.pub. The key fingerprint is: 24:36:f6:de:92:c0:14:c8:f0:18:3f:0d:94:49:00:15 deploy@li610-92 The key's randomart image is: +--[ RSA 2048]----+ |.oEB++. | | ==o . | | . + B . | | * = | | o S | | o o | | + . | | . | | |

一路回车下来,密钥就生成了。然后将生成的公钥加入authorized_keys文件中。

$ cp ~/.ssh/blog.pub ~/.ssh/authorized_keys

下面就是将私钥传输回你自己的电脑,我一般使用的是sftp.通过sftp登陆你的VPS,

$ get ~/.ssh/blog .ssh/

这样服务器端的设置基本完成了。这时,你可以删除掉~/.ssh/blog这个文件了。

客户端

客户端主要是配置你的ssh config文件。

$ touch ~/.ssh/config $ vim ~/.ssh/config $ Host demo HostName YOUR_HOSTNAME User YOUR_HOSTUSERNAME IdentityFile ~/.ssh/blog

这样,大功告成。

尝试一下

$ ssh demo

就可以成功登陆了。

下一篇应该会涉及ssh登陆的其他安全问题。

共收到 10 条回复
865

完全反掉了吧。。。

# 在本地生成公私钥
$ ssh-keygen
# 把公钥放到服务器上
$ ssh-copy-id xx@example.com
5347

#1楼 @yesmeck 好像是呀,在本地生成的公私钥会更好。。。 = =!!!

490

知错就改善莫大焉,分享的同时也会收获很多.

186
cp ~/.ssh/blog.pub ~/.ssh/authorized_keys

Bang! 之前设置的 pub key 全没了。

另外一个有用的是 ssh agent,这样你可以给 key 设置个 passphrase 增加安全性但又不用每次去输入 passphrase。而且通过 ssh agent forward,可以实现在登录服务器后,仍然使用本机的 key ,好处是部署的时候,不用把服务器的 key 加到像 github 这样的服务中去。这样服务器被黑,别人也没法访问你的 github

1638

记得把.ssh文件夹的权限改为744,authorized_keys改为644

为了安全,顺便把密码登录关掉。

207

#5楼 @xiaoronglv key 的权限应该是 400 吧

96

#6楼 @blacktulip 你太严格了,CentOS也才推荐600

http://wiki.centos.org/HowTos/Network/SecuringSSH

实际上,StrictMode只要求下面这样(待确认,凭印象写的)

700 ~
755 ~/.ssh
644 ~/.ssh/authorized_keys 
207

#7楼 @bhuztez 我可能记错了,也许是私钥应该 400 …

96

#8楼 @blacktulip Server上也不该放私钥吧

207

#9楼 @bhuztez 当然,我说的是 client 这边,我记得有几次连服务器的时候说某个钥的权限太开放不让我连,现在想起来应该是私钥

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册