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用户,换个用户名
相关文章推荐
- Nginx+PHP实现无后缀访问
- Window Server 2008 R2 在Active Directory域中不能更改服务器密码策略
- 如持有笔
- android事件分发机制详解
- JAVA——装箱和拆箱
- 引用程序集没有强名称解决办法
- Java 枚举7常见种用法
- (版本定制)第11课:Spark Streaming源码解读之Driver中的ReceiverTracker彻底研究和思考
- kali
- H.264 open-GOP
- php与Java的比较
- hdu5698 瞬间移动(组合数取摸)(16百度之星round2B)
- 关于PATCH的错误以及用法,几乎涵盖了所有。
- 第八周项目四(2)-游戏中角色类的增强版
- Linux学习之位置参数变量
- 通用单链表C实现
- 【转】MSMQ消息队列安装
- 数据库SQL优化大总结之 百万级数据库优化方案
- Window Server 2008 R2 在Active Directory域中不能更改服务器密码策略
- 单例模式中的线程安全(延迟加载)