linux ssh服务不使用密码的方法

发布于 2022-09-19 13:23:23 字数 2898 浏览 14 评论 9

转自:此心安处是吾乡

linux ssh服务不使用密码的方法

  SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为创建在应用层和传输层基础上的安全协议。(维基百科http://zh.wikipedia.org/zh-cn/SSH

  SSH默认登录时要输入密码,但有时写程序希望通过SSH服务在远程机器上执行命令,希望可以跳过输入密码的方法,那么应该怎么办呢?

首先看一下SSH的认证方式。(维基百科http://zh.wikipedia.org/zh-cn/SSH
SSH的安全验证

在客户端来看,SSH提供两种级别的安全验证。

    * 第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,可能会有别的服务器在冒充真正的服务器,无法避免被“中间人”攻击。
    * 第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。客户端软件会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。如果两个密匙一致,服务器就用公有密匙加密“质询”(challenge)并把它发送给客户端软件。从而避免被“中间人”攻击。

在服务器端,SSH也提供安全验证。 在第一种方案中,主机将自己的公用密钥分发给相关的客户端,客户端在访问主机时则使用该主机的公开密钥来加密数据,主机则使用自己的私有密钥来解密数据,从而实现主机密钥认证,确定客户端的可靠身份。 在第二种方案中,存在一个密钥认证中心,所有提供服务的主机都将自己的公开密钥提交给认证中心,而任何作为客户端的主机则只要保存一份认证中心的公开密钥就可以了。在这种模式下,客户端必须访问认证中心然后才能访问服务器主机。

  从客户端第二种级别的验证方式,我们发现我们可以实现不输密码的登录,但要求将本地的公钥放在服务器上。下面是具体的方法。

view source
print?
首先机器上要安装ssh服务<br>ubuntu 上只要输入<br>$ sudo apt-get install ssh openssl<br>生成密钥<br>$ ssh-keygen -t rsa<br>连续打三个回车<br>Generating public/private rsa key pair.<br>Enter file in which to save the key (/home/abc/.ssh/id_rsa): <br>Created directory '/home/abc/.ssh'.<br>Enter passphrase (empty for no passphrase): <br>Enter same passphrase again: <br>Your identification has been saved in /home/abc/.ssh/id_rsa.<br>Your public key has been saved in /home/abc/.ssh/id_rsa.pub.<br>The key fingerprint is:<br>……以下省略……<br><br>产生密钥后,将公钥追加到目标服务器登录用户的 authorized_keys里。<br>用追加的方法可以让多台机器访问服务器不用密码。以下以root用户为例,其他用户一样。<br>先拷贝一下。<br>$ scp /home/abc/.ssh/id_rsa.pub root@192.168.100.224:/root/.ssh/abc_authorized_keys<br>然后登录远程机器,将刚才的文件追加到/root/.ssh/authorized_keys后,没有则创建。<br>$ ssh root@192.168.100.224<br># cd /root/.ssh<br># cat abc_authorized_keys >> authorized_keys<br>(注意是双>>,另外文件名不要写错了)<br>退出后再登录就不需要密码了。<br>

另外补充一下开机自动启动ssh服务的方法。

view source
print?
网上查到的方法挺多的,我采用的是这种,并且有效。<br>修改/etc/rc.loacl文件,在 exit 0 前增加一句<br>/etc/init.d/sshd start<br><br>另外的方法是<br>service sshd start<br>或<br># chkconfig sshd on<br># reboot <br>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

不知在何时 2022-09-19 14:37:36

回复  dreamice

    方法其实楼主总结的已经很详细了,关键的一步是:在这时候输入一个key的密码,下一行 ...
chenyx 发表于 2010-11-17 08:39

    我也学习了

腹黑女流氓 2022-09-19 14:37:27

回复 8# dreamice

    方法其实楼主总结的已经很详细了,关键的一步是:

  1. Enter passphrase (empty for no passphrase):

复制代码在这时候输入一个key的密码,下一行需要确认.
这样的话,用key登陆的时候,就需要输入那个密码了,密码不正确将不能登陆

滴情不沾 2022-09-19 14:37:16

回复  dreamice

    用这个key的时候需要输入生成key时输入的密码,不是用户密码
chenyx 发表于 2010-11-17 08:22

    安全性加强了,但很多人其实不想输入key是为了省事,呵呵。
兄台可否详细说明一下操作方法!谢谢!

嘿咻 2022-09-19 14:35:33

不使用密码的话,不安全了

绝不放开 2022-09-19 14:31:33

回复 5# dreamice

    用这个key的时候需要输入生成key时输入的密码,不是用户密码

猛虎独行 2022-09-19 14:25:59

回复 4# chenyx

    那等于双重密码了,关键是用这个key的时候,是不是还要输入密码?

话少心凉 2022-09-19 14:15:39

生成key的时候也可以加密码,这个密码与用户密码不同

櫻之舞 2022-09-19 14:12:52

感谢分享,不过考虑到安全问题,不输入密码还是要谨慎
dreamice 发表于 2010-11-16 14:18

    谢谢楼上的提示 SSH还是加上密码的好

对岸观火 2022-09-19 13:53:53

感谢分享,不过考虑到安全问题,不输入密码还是要谨慎

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文