SSH免密码登录

来源:互联网 发布:ubuntu安装maven 编辑:程序博客网 时间:2024/05/29 09:52

ssh 无密码登录要使用公钥与私钥。linux下可以用ssh-keygen生成公钥/私钥对,现在,以服务器centos(ip地址192.168.1.240),客户端ubuntu的例子进行说明。

先确保所有主机的防火墙处于关闭状态


1.查看Server端(客户端为ubuntu)/home/用户/目录下是否存在隐藏目录".ssh"

在安装ssh完成后,进入/home/用户/目录,使用命令:ls -al    查看目录结构中是否存在隐藏目录“.ssh”

若存在,则操作正确,若不存在,解决方法如下:

按照步骤一,重新安装一遍ssh服务

若安装成功后还不存在".ssh"目录,则使用mkdir  .ssh   在家目录下新建一个.ssh目录

一般来说,多数系统在安装完ssh服务后,默认都会自动建立“ssh”隐藏目录,只有少数需要手动创建。


2.在ubuntu下生成公钥/私钥对。

[chenlb@A ~]$ ssh-keygen -t rsa -P ''

chenlb是用户名,这里他是普通用户,A是主机名, ~表示当前在~目录下,即为/home/chenlb/下
-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。(否则,如图!需要三次回车,图为root用户登录,文本以chenlb普通用户登陆为例)
如果是普通用户登录,然后生成公钥,则默认存储在"/home/用户/.ssh"目录下。

如果是root用户登录,然后生成公钥,则默认存储在"/root/.ssh"目录下。

.ssh下有id_rsa(这个是私钥)和id_rsa.pub(这个是公钥)。


 


3.把ubuntu的id_rsa.pub的内容复制centos 
如:想无密码登录root用户就复制到/root/.ssh/authorized_keys
     想无密码登录其他用户就复制到/home/用户/.ssh/authorized_keys (以这种情况为例)
--------------------------------------------------------------

【tip】   ~代表你的/home/用户名目录
假设你的用户名是x,那么~/就是/home/x/

--------------------------------------------------------------


ubuntu下发送

scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/  -->将公钥复制到远程服务器的~/目录下

scp ~/.ssh/id_rsa.pub hadoop@192.168.1.240:~/(发送到服务器)
hadoop @192.168.1.240's password:

可以看到我们复制的时候需要我们输入服务器的密码,等我们把SSH配置好之后这些步骤就可以不用输入密码了。

这时,可以从命令行头部看出,已经到了服务器端,再输入命令是对服务器进行操作
centos 下

(注意:如果是第一次运行SSH,那么.ssh目录需要手动创建,或者使用命令ssh-keygen -t rsa生成秘钥,它会自动在用户目录下生成.ssh目录。特别注意的是.ssh目录的权限问题,记得运行下chmod 700 .ssh命令)

--------------------------------------------------------------

【tip】cat file1 >> file2
file1中的内容追加到file2中,即将file1内容合并到file2中,并不覆盖file2原来已有内容。

--------------------------------------------------------------

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys  -->追加公钥到authorized_keys中

chmod 600 ~/.ssh/authorized_keys  --> authorized_keys的权限设为600

 

 

登陆root用户在服务器上开启ssh服务认证功能,操作方法如下

vim /etc/ssh/sshd_config  

取消这3行  前面的#注释符号

#RSAAuthentication yes #启用RSA认证

#PubkeyAuthentication yes #启用公钥私钥配对认证方式

#AuthorizedKeysFile %h/.ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

 

service sshd restart  -->重启ssh服务

exit  -->退出

 

回到客户机来,输入:

ssh 用户@192.168.1.240   -->就能直接连接服务器咯。

如果本地用户名与远程用户名一致,登录时可以省略用户名。

 

本文的例子由其他博主提供,本人将其引用,并做出详细的解释,若有错误,请大佬指正,感谢!
原创粉丝点击