概述

链接:https://blog.csdn.net/quintind/article/details/80717744
ssh 是命令,centos 中这个组件的名称是 OpenSSH.
OpenSSH, open Secure shell,开放安全的shell。
OpenSSH 在 centos 上分为客户端 openssh-client 和服务端 openssh-server。
如果 sshd 命令可用,说明此服务器可以做远程服务器;
如果 ssh 命令可用,说明此服务器有客户端,可以登录其他的服务器。

安装配置

安装

查看相关包是否安装:

  1. yum list installed|grep openssh

链接:https://blog.csdn.net/tuntun1120/article/details/65443757
安装服务端
链接:OpenSSH 的安装使用)

  1. yum -y install openssh-server

安装开启服务之后,允许其他用户远程登录。
安装客户端

  1. yum -y install openssh-clients

安装了客户端之后,就可以使用 ssh 命令登录到其他服务器了。

设置服务端 sshd 自启

centos7
链接:https://www.alibabacloud.com/help/faq-detail/41501.htm
管理 sshd 的服务

  1. systemctl status/start/restart/stop sshd.service

配置 config

  1. Host light_dev    
  2. HostName 47.102.132.xx
  3. Port 22
  4. User root
  5. PreferredAuthentications publickey
  6. IdentityFile ~/.ssh/id_rsa

这样子配置之后,相当于给 47.102.132.xx 配置了域名地址,直接使用 ssh light_dev 就可以登录。
配置了之后,使用 scp 也不用地址了。

配置免密码登录

1. ssh-keygen 生成密钥对

ssh-keygen, 生成 公钥私钥;

  1. ssh-keygen

私钥不要设置密码

  • passphrase,密码;
  • 回车不设置密码,不回车输入密码;
  • 输入密码后,每次程序读取私钥都需要手动输入密码;
    1. Enter passphrase (empty for no passphrase):

    2. 远程服务器配置

    方法一:ssh-copy-id 上传本地公钥

    1. ssh-copy-id [-i [identity_file]] [user@]machine
    2. ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop-slave-01

    方法二:手动配置

    把客户端的 id_rsa.pub 的内容添加到远程服务器的 ~/.ssh/authorized_keys 中。如果没有 authorized_keys 此文件,则创建。

    使用 openssh

    远程登录

  1. ssh host_name -l root

SCP 远程传输文件

下载远程服务器上的文件

注意在本地电脑上执行此命令,否则会出现如下错误:

当然 sshkey 什么的首先要配置好。

  1. Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

免密登录的模式下的下载命令:

  1. scp remote_account@remote_address:remote_file local_file_path(要把远程文件下载到哪里)

上传文件到远程服务器

免密登录的模式下的上传命令:

  1. scp local_file_path(上传文件) remote_account@remote_address:remote_file(上传文件的放置地址)

scp 的相关参数

  • r,递归,可以上传下载文件夹
  • P,大写的P,在修改端口时指定此命令

    免密登录的配置

    sshd_config 是 opensshd 服务器的管理工具,别人的电脑连接此电脑的设置。
    配置文件的位置,centso 在 /etc/ssh/sshd_config
    免密登录重要配置:

  • ListenAddress, 指定本地 sshd 应该监听的地址;个例子来说,如果您有两个 IP, 分别是 192.168.0.11 及 192.168.2.20 ,那么只想要开放 192.168.0.11 时,就可以设置为:ListenAddress 192.168.0.1 ```

    监听的端口

    port 22

ListenAddress 0.0.0.0 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key SyslogFacility AUTHPRIV AuthorizedKeysFile .ssh/authorized_keys ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials no UsePAM yes X11Forwarding yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server

是否允许以 root 的身份登录,如果不允许,即便密码正确,也会出现 authentication failed.

PermitRootLogin yes PasswordAuthentication yes UseDNS no

重试次数

MaxAuthTries

限制用户必须在指定的时间内认证成功,0 表示无限制,120是默认值

Authentication

  1. <a name="Sm78L"></a>
  2. # Debug/查看链接日志
  3. 查看客户端日志, `ssh -v root@hostname`
  4. <a name="879eabfd"></a>
  5. # 踩坑
  6. <a name="0d713ede"></a>
  7. ## 登录失败排查-debug
  8. - 查看客户端日志, `ssh -v root@hostname`
  9. - 查看远程主机日志,`vim /var/log/secure`
  10. - 日志中出现 `Authentication refused: bad ownership or modes for directory /root` , 说明是文件权限设置有问题。`~/.ssh`的权限是 700, `authorized_keys` to 600.
  11. - 日志中出现,`key_load_public: No such file or directory` 也是正常的。
  12. - 查看公钥是否错误, 是以 ssh-rsa 开头的, 如果公钥没有配置正确,会自动转到密码配置,并且不会有错误日志输出。如之前犯错,`ssh-rsa` 少了 1 个 s.
  13. - 如果是 root 账号,看配置是否允许 root 登录,permitRootLogin
  14. - 是否是默认端口,22;
  15. - 查看防火墙没有屏蔽该端口

systemctl enable sshd.service

  1. <a name="e6a21fdb"></a>
  2. ## 重装系统后,使用原来的密钥认证失败。
  3. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!<br />因为重装系统后,机器的指纹变了。办法,清空客户端的 known_hosts 文件。
  4. <a name="9ce9790f"></a>
  5. ## 禁止密码、root 登录后
  6. 禁止密码或root登录后,抛出的异常:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

  1. <a name="aRKBs"></a>
  2. ## WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  3. <br />IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!<br />Someone could be eavesdropping on you right now (man-in-the-middle attack)!<br />It is also possible that a host key has just been changed.<br />The fingerprint for the ECDSA key sent by the remote host is<br />SHA256:SvuEYyhEi88CIWULvqJj/M4iZBccu2DbQoUIgySxgnU.<br />Please contact your system administrator.<br />Add correct host key in /Users/yutou/.ssh/known_hosts to get rid of this message.<br />Offending ECDSA key in /Users/yutou/.ssh/known_hosts:15<br />ECDSA host key for 47.101.143.53 has changed and you have requested strict checking.<br />Host key verification failed.
  4. 警告:远程主机身份认证已经改变。<br />场景:<br />已经使用 rsa 密钥登录过远程主机,当 rsa 密钥对修改后再次登录,会出现此告警。<br />应对:<br />清除该 ip 地址在 ` ~/.ssh/known_hosts` 中的记录。
  5. <a name="Ea7xP"></a>
  6. ## WARNING: UNPROTECTED PRIVATE KEY FILE!
  7. <br />Permissions 0644 for '~/.ssh/id_rsa_k8s01' are too open.<br />It is required that your private key files are NOT accessible by others.<br />This private key will be ignored.<br />Load key "/Users/yutou/.ssh/id_rsa_k8s01": bad permissions<br />root@47.101.143.53: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).<br />警告:不受保护的私钥文件。<br />场景:私钥不是通过系统生成的,而是其他地方生成的,然后自己创建文件写入的。<br />应对:私钥文件应该只读。

chmod 400 ~/.ssh/id_rsa_k8s01 ```