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_rsaid_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访问这台主机就会出现冲突警告。有以下两个解决方案:

  1. 手动删除修改known_hsots里面的内容;
  2. 修改配置文件“~/.ssh/config”,加上这两行,重启服务器。
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
posted @ 2019-03-07 14:59  stream886  阅读(4702)  评论(1编辑  收藏  举报