您的位置:首页 > 其它

SSH & 免密码登入

2016-05-22 23:01 267 查看

SSH & 免密码登入

SSH原理与运用(一):远程登录

最基本的用法

SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。

$ ssh user@host

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

$ ssh host

SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

$ ssh -p 2222 user@host

上面这条命令表示,ssh直接连接远程主机的2222端口。

公钥登录(免密码)1

这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:

$ ssh-keygen

运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。

运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。

这时再输入下面的命令,将公钥传送到远程主机host上面:

$ ssh-copy-id user@host (仿照第三条吧,可能有错)

或者

$ ssh user@host ‘mkdir -p .ssh && cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub

登入到root

ssh-copy-id -i id_rsa.pub root@192.168.56.101

好了,从此你再登录,就不需要输入密码了。

如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面”#”注释是否取掉。

  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys


然后,重启远程主机的ssh服务。

// ubuntu系统

service ssh restart

 // debian系统

/etc/init.d/ssh restart

authorized_keys文件

远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

这里不使用上面的ssh-copy-id命令,改用下面的命令,解释公钥的保存过程:

$ ssh user@host ‘mkdir -p .ssh && cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub

这条命令由多个语句组成,依次分解开来看:

1. "$ ssh user@host",表示登录远程主机;
2.单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,表示登录后在远程shell上执行的命令
3."$ mkdir -p .ssh"的作用是,如果用户主目录中的.ssh目录不存在,就创建一个;
4.'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,重定向追加到远程文件authorized_keys的末尾。


写入authorized_keys文件后,公钥登录的设置就完成了。

公钥登录(免密码)2

使用下例中ssky-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机。

ssh-keygen 创建公钥和密钥。

ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。

ssh-copy-id 也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限 。

步骤1: 用 ssh-key-gen 在本地主机上创建公钥和密钥

ligh@local-host$ ssh-keygen -t rsa

Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key]

Enter passphrase (empty for no passphrase): [Press enter key]

Enter same passphrase again: [Pess enter key]

Your identification has been saved in /home/jsmith/.ssh/id_rsa.

Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.

The key fingerprint is: 33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9

ligh@local-host

步骤2: 用 ssh-copy-id 把公钥复制到远程主机上

ligh@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3

ligh@remote-host‘s password:

Now try logging into the machine, with ―ssh ?remote-host‘‖, and check in:

.ssh/authorized_keys to make sure we haven‘t added extra keys that you weren‘t expecting.

[注: ssh-copy-id 把公钥分发即追加到远程主机的 .ssh/authorized_key 上.]

步骤3: 直接登录远程主机

ligh@local-hostsshremote−hostLastlogin:SunNov1617:22:332008from192.168.1.2[注:SSH不会询问密码.]ligh@remote−host

[注: 你现在已经登录到了远程主机上]

SSH Key 无密码登录(原)

A为本地主机(即用于控制其他主机的机器),B为远程主机(即被控制的机器Server), 假如ip为192.168.56.101,A和B的系统都是Linux

在A上的命令:

ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)

ssh root@192.168.56.101 “mkdir .ssh;chmod 0700 .ssh” (需要输入服务器root密码, 注:必须将.ssh的权限设为700)

scp ~/.ssh/id_rsa.pub root@192.168.56.101:.ssh/id_rsa.pub (需要输入服务器root密码)

在B上的命令:

touch /root/.ssh/authorized_keys (如果已经存在这个文件, 跳过这条)

chmod 600 ~/.ssh/authorized_keys (# 注意: 必须将~/.ssh/authorized_keys的权限改为600, 该文件用于保存ssh客户端生成的公钥,可以修改服务器的ssh服务端配置文件/etc/ssh/sshd_config来指定其他文件名)

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys (将id_rsa.pub的内容追加到 authorized_keys 中, 注意不要用 > ,否则会清空原有的内容,使其他人无法使用原有的密钥登录)

也可以不用root用户,换个用户名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: