Linux登录指令-ssh
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
ssh远程登陆
登录 22为默认端口
ssh omd@192.168.25.137
ssh -p 22 omd@192.168.25.137
ssh免密码登陆
首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_rsa.pub
;私钥文件:~/.ssh/id_rsa
),然后把公钥放到服务器上 (~/.ssh/authorized_keys
),自己保留好私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以登录了。
白话说明:每个机器都可以生成自己的密钥和公钥,将自己的公钥交给其他人后,之后使用ssh远程访问远程机器时,会自动拿自己的密钥去匹配远程机器上公钥记录(提前登记),匹配上了就自动连接,不需要密码!
生成公钥和私钥
如果已经生成可以跳过(所有询问输入都跳过)
ssh-keygen -t rsa
产生一个新目录,叫.ssh
,进入该目录ls就会发现有两个文件,id_rsa
和id_rsa.pub
,前者为密钥,后者为公钥
将公钥复制到其他从机
-
方式一(通用方法)
# 将主机私钥复制成authorized_keys cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 修改权限 chmod 600 ~/.ssh/authorized_keys # 远程拷贝 scp ~/.ssh/authorized_keys cjp@hadoop001:~/.ssh/
-
方式二(ssh专属方法)
ssh-copy-id
将主机的pub值
写入远程机器的~/.ssh/authorized_key
中,- 如果远程机器上不存在
~/.ssh/authorized_key
文件,将会自动创建 - 如果主机的
pub值
已经存在~/.ssh/authorized_key
文件中,将会复写该主机在此远程机器的pub值
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.100
- 如果远程机器上不存在
文件说明
id_rsa
私钥
id_rsa.pub
公钥
authorized_keys
一个登记本,经过授权的公钥,可以免密码登陆。不会自动创建。
有专用的ssh-copy-id指令对应这个文件(参考上诉的密码登陆方式二)。
known_host
参考:https://www.cnblogs.com/cindy-cindy/p/6797216.html
ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
只要机子远程登陆过其他机子,当前机子就会创建出known_host进行登记。
一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告。有以下两个解决方案:
- 手动删除修改known_hsots里面的内容;
- 修改配置文件“~/.ssh/config”,加上这两行,重启服务器。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null