概述
链接:https://blog.csdn.net/quintind/article/details/80717744
ssh 是命令,centos 中这个组件的名称是 OpenSSH.
OpenSSH, open Secure shell,开放安全的shell。
OpenSSH 在 centos 上分为客户端 openssh-client 和服务端 openssh-server。
如果 sshd 命令可用,说明此服务器可以做远程服务器;
如果 ssh 命令可用,说明此服务器有客户端,可以登录其他的服务器。
安装配置
安装
查看相关包是否安装:
yum list installed|grep openssh
链接:https://blog.csdn.net/tuntun1120/article/details/65443757
安装服务端
链接:OpenSSH 的安装使用)
yum -y install openssh-server
安装开启服务之后,允许其他用户远程登录。
安装客户端
yum -y install openssh-clients
安装了客户端之后,就可以使用 ssh 命令登录到其他服务器了。
设置服务端 sshd 自启
centos7
链接:https://www.alibabacloud.com/help/faq-detail/41501.htm
管理 sshd 的服务
systemctl status/start/restart/stop sshd.service
配置 config
Host light_devHostName 47.102.132.xxPort 22User rootPreferredAuthentications publickeyIdentityFile ~/.ssh/id_rsa
这样子配置之后,相当于给 47.102.132.xx 配置了域名地址,直接使用 ssh light_dev 就可以登录。
配置了之后,使用 scp 也不用地址了。
配置免密码登录
1. ssh-keygen 生成密钥对
ssh-keygen, 生成 公钥私钥;
ssh-keygen
私钥不要设置密码
- passphrase,密码;
- 回车不设置密码,不回车输入密码;
- 输入密码后,每次程序读取私钥都需要手动输入密码;
Enter passphrase (empty for no passphrase):
2. 远程服务器配置
方法一:ssh-copy-id 上传本地公钥
ssh-copy-id [-i [identity_file]] [user@]machinessh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop-slave-01
方法二:手动配置
把客户端的 id_rsa.pub 的内容添加到远程服务器的~/.ssh/authorized_keys中。如果没有 authorized_keys 此文件,则创建。使用 openssh
远程登录
ssh host_name -l root
SCP 远程传输文件
下载远程服务器上的文件
注意在本地电脑上执行此命令,否则会出现如下错误:
当然 sshkey 什么的首先要配置好。
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
免密登录的模式下的下载命令:
scp remote_account@remote_address:remote_file local_file_path(要把远程文件下载到哪里)
上传文件到远程服务器
免密登录的模式下的上传命令:
scp local_file_path(上传文件) remote_account@remote_address:remote_file(上传文件的放置地址)
scp 的相关参数
- r,递归,可以上传下载文件夹
-
免密登录的配置
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
<a name="Sm78L"></a># Debug/查看链接日志查看客户端日志, `ssh -v root@hostname`<a name="879eabfd"></a># 踩坑<a name="0d713ede"></a>## 登录失败排查-debug- 查看客户端日志, `ssh -v root@hostname`- 查看远程主机日志,`vim /var/log/secure`- 日志中出现 `Authentication refused: bad ownership or modes for directory /root` , 说明是文件权限设置有问题。`~/.ssh`的权限是 700, `authorized_keys` to 600.- 日志中出现,`key_load_public: No such file or directory` 也是正常的。- 查看公钥是否错误, 是以 ssh-rsa 开头的, 如果公钥没有配置正确,会自动转到密码配置,并且不会有错误日志输出。如之前犯错,`ssh-rsa` 少了 1 个 s.- 如果是 root 账号,看配置是否允许 root 登录,permitRootLogin- 是否是默认端口,22;- 查看防火墙没有屏蔽该端口
systemctl enable sshd.service
<a name="e6a21fdb"></a>## 重装系统后,使用原来的密钥认证失败。WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!<br />因为重装系统后,机器的指纹变了。办法,清空客户端的 known_hosts 文件。<a name="9ce9790f"></a>## 禁止密码、root 登录后禁止密码或root登录后,抛出的异常:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
<a name="aRKBs"></a>## WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!<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.警告:远程主机身份认证已经改变。<br />场景:<br />已经使用 rsa 密钥登录过远程主机,当 rsa 密钥对修改后再次登录,会出现此告警。<br />应对:<br />清除该 ip 地址在 ` ~/.ssh/known_hosts` 中的记录。<a name="Ea7xP"></a>## WARNING: UNPROTECTED PRIVATE KEY FILE!<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 ```
