范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

运维必备!Linux相关远程SSH运维总结分享

  对于linux运维工作者而言,使用ssh远程远程服务器是再熟悉不过的了!对于ssh的一些严格设置也关系到服务器的安全维护,今天在此,就本人工作中使用ssh的经验而言,做一些总结记录来下。
  -bash: ssh: command not found
  解决办法:"yum install -y openssh-server openssh-clinets"
  1. ssh登录时提示:Read from socket failed: Connection reset by peer.
  尝试了很多解决方案均无效,无奈!卸载sshd,然后重新安装
  # yum remove openssh*
  # rm -rf /etc/ssh*
  # yum install -y openssh*
  # systemctl start sshd.service
  2. ssh远程登陆后的提示信息
  我们经常会使用中控机ssh信任跳转到其他机器上,但是不知道有没有运维朋友注意到ssh跳转成功后的终端显示的提示信息?
  这些提示信息,是为了方便我们在第一时间知道ssh跳转到哪台目标机上,也是为了避免长期频繁跳转后由于大意造成的误入机器操作的风险,我们通常会在ssh跳转到目标机器后显示一些提示信息,在一些国家, 登入给定系统前, 给出未经授权或者用户监视警告信息, 将会受到法律的保护 .如下:
  [root@bastion-IDC ~]# ssh -p22 192.168.1.15
  Last login: Fri Jul 15 13:26:53 2016 from 124.65.197.154
  ===================================
  |||||||||||||||||||||||||||||||||||
  ===================================
  HOSTNAME: monit-server
  IPADDRES: 192.168.1.15
  ===================================
  IDC监控机
  ===================================
  那么上面的提醒信息是在哪设置的呢?
  做法一:其实很简单,这些信息是在目标机器的/etc/motd文件里自定义的
  [root@monit-server ~]# cat /etc/motd
  ===================================
  |||||||||||||||||||||||||||||||||||
  ===================================
  HOSTNAME: monit-server
  IPADDRES: 192.168.1.15
  ===================================
  IDC监控机
  ===================================
  做法二:在目标机器的/etc/ssh/sshd_config文件里定义,然后重启sshd服务即可。这两种做法是一致的效果!
  Banner /etc/sshfile
  [root@host-192-168-1-117 ~]# cat /etc/sshfile
  this is 192.168.1.117
  远程登陆:
  [root@linux-node2 ~]# ssh 192.168.1.117
  this is 192.168.1.117
  [root@host-192-168-1-117 ~]#
  3. 实现SSH无密码登录:使用ssh-keygen和ssh-copy-id
  ssh-keygen 产生公钥与私钥对.
  ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的/home/username/.ssh和~/.ssh/authorized_keys的权利.
  操作记录:
  1)第一步:在本地机器上使用ssh-keygen产生公钥私钥对
  #ssh-keygen -t rsa //一路默认回车
  这样就会在当前用户家目录下的.ssh目录里产生公钥和私钥文件:id_rsa.pub、id_rsa。可以将id_rsa.pub公钥文件复制成authorized_keys
  2)第二步:可以手动将本机的id_rsa.pub公钥文件内容复制到远程目标机的.ssh/authorized_keys文件中,可以就可以实现ssh无密码登陆。
  当然,也可以在本机直接使用ssh-copy-id将公钥复制到远程机器中
  #ssh-copy-id -i /root/.ssh/id_rsa.pub user@ip [把本机的公钥拷贝到远程机器上,比如B机器]
  也可以不加公钥路径,会默认加上
  #ssh-copy-id user@ip
  注意:
  ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件(文件会自动创建)中
  对于非22端口(比如22222)情况下的ssh-copy-id的使用,需要这样用:
  # ssh-copy-id -i /root/.ssh/id_rsa.pub "-p 22222 root@192.168.18.18"
  3)这样,本机登录到上面远程机器(B机器)就不用输入密码
  #ssh user@ip
  4. ssh登录失败,报错:Pseudo-terminal will not be allocated because stdin
  现象:
  需要登录线上的一台目标机器A,但是不能直接登录(没有登录权限),需要先登录B机器,然后从B机器跳转到A机器。
  脚本如下:
  localhost:~ root# cat IDC-7.sh
  #!/bin/bash
  ssh root@101.201.114.106 "ssh -p25791 root@103.10.86.7"
  但是在执行脚本的时候报错如下:
  Pseudo-terminal will not be allocated because stdin
  原因:
  伪终端将无法分配,因为标准输入不是终端。
  解决办法:
  需要增加-t -t参数来强制伪终端分配,即使标准输入不是终端。
  在脚本里添加-t -t参数即可,如下:
  localhost:~ root# cat IDC-7.sh
  #!/bin/bash
  ssh root@101.201.114.106 "ssh -t -t -p25791 root@103.10.86.7"
  或者
  localhost:~ root# cat IDC-7.sh
  #!/bin/bash
  ssh -t root@101.201.114.106 "ssh -t -t -p25791 root@103.10.86.7"
  5. ssh远程登陆缓慢问题
  解决办法:
  编译/etc/ssh/sshd_config配置文件:
  UseDNS no
  GSSAPIAuthentication no
  然后重启sshd服务即可!
  6. ssh登录出现:permission denied(publickey.gssapi-with-mic)
  解决方法:
  修改/etc/ssh/sshd-config文件,将其中的:
  PermitRootLogin no修改为yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys前面加上#屏蔽掉
  PasswordAuthentication no修改为yes
  最后重启sshd服务即可!
  7. ssh连接错误问题
  1) 在使用ssh或scp或rsync远程连接的时候,出现如下报错:
  Address **** maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
  解决方法:
  修改本机ssh_config文件
  [root@kvmserver ~]# vim /etc/ssh/ssh_config
  GSSAPIAuthentication no
  [root@kvmserver ~]#/etc/init.d/sshd restart
  问题迎刃而解
  2) 本机scp、rsync命令都已具备,但是在使用scp或rsync远程同步的时候报错:
  bash: scp: command not found
  bash: rsync: command not found
  原因:是由于远程机器上没有安装scp或rsync造成的!安装这两个命令即可
  yum install openssh-clients
  yum install rsync
  3)远程ssh连接时错误" The X11 forwarding request was rejected!"
  解决方法:
  将sshd_config中 设置 X11Forwarding yes
  重启sshd服务。
  8. ssh连接超时被踢出问题
  当使用xshell,SecureCRT等客户端访问linux服务器,有时候会出现终端定期超时被踢出的情况。
  下面介绍三种方法来防止超时被踢出的方法,后两种情况的设置方法以及通过设置shell变量来达到此目的的方法:
  1、 配置服务器
  # vim /etc/ssh/sshd_config
  1)找到 ClientAliveInterval参数,如果没有就自己加一行
  数值是秒,比如你设置为120 ,则是2分钟
  ClientAliveInterval 120
  2)ClientAliveCountMax
  指如果发现客户端没有响应,则判断一次超时,这个参数设置允许超时的次数。如3 、5等自定义
  修改两项参数后如下:
  ----------------------------
  ClientAliveInterval 120
  ClientAliveCountMax 3  //0 不允许超时次数
  修改/etc/ssh/sshd_config文件,将 ClientAliveInterval 0和ClientAliveCountMax 3的注释符号去掉,将ClientAliveInterval对应的0改成60,没有就自己输入。
  ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔, 默认是0,不发送.而ClientAliveInterval 60表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.ClientAliveCountMax, 使用默认值3即可.ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
  重新加载sshd服务。退出客户端,再次登陆即可验证。
  3)重启sshd service
  # /etc/init.d/ssh restart
  2、 配置客户端
  #vim /etc/ssh/ssh_config
  然后找到里面的
  ServerAliveInterval
  参数,如果没有你同样自己加一个就好了
  参数意义相同,都是秒数,比如5分钟等
  ServerAliveInterval 300
  3、# echo export TMOUT=1000000 >> /root/.bash_profile; source .bash_profile
  在Linux 终端的shell环境中通过设置环境变量TMOUT来阻止超时。如果显示空白,表示没有设置, 等于使用默认值0, 一般情况下应该是不超时. 如果大于0, 可以在如/etc/profile之类文件中设置它为0.
  9. ssh远程登陆,公钥授权不通过:Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
  公司IDC机房服务器,之前做了跳板机环境,其他机器只允许从跳板机ssh无密码信任过去,并且在信任关系做好后,禁用了其他机器的密码登陆功能(sshd_config文件里设置"PermitEmptyPasswords no")
  后来跳板机出现了问题,打算重装这台机器,重装前取消了其他机器里只允许跳板机ssh信任关系,并且恢复了密码登陆功能:
  [root@bastion-IDC ssh]# vim /etc/ssh/sshd_config
  PermitEmptyPasswords yes
  [root@bastion-IDC ssh]# service sshd restart
  修改后,当时在其他机器间是可以ssh相互登陆,当时没在意,以为一切ok了。
  可是,到了第二天,再次ssh登陆时,尼玛,居然报错了~~
  Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
  最后发现是selinux惹的祸!关闭它即可。
  1)临时关闭selinux
  [root@bastion-IDC ssh]# setenforce 0
  [root@bastion-IDC ssh]# getenforce
  Permissive
  2)永久关闭
  [root@bastion-IDC ssh]# vim /etc/sysconfig/selinux
  SELINUX=disabled
  [root@bastion-IDC ssh]# reboot #重启系统才能生效
  说明:
  1)ssh可同时支持publickey和password两种授权方式,publickey默认不开启,需要配置为yes。
  如果客户端不存在.ssh/id_rsa,则使用password授权;存在则使用publickey授权;如果publickey授权失败,依然会继续使用password授权。
  2)GSSAPI身份验证.
  GSSAPIAuthentication 是否允许使用基于 GSSAPI 的用户认证.默认值为"no".仅用于SSH-2.
  GSSAPICleanupCredentials 是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes".仅用于SSH-2.
  需要特别注意的是:
  GSSAPI是公共安全事务应用程序接口(GSS-API)
  公共安全事务应用程序接口以一种统一的模式为使用者提供安全事务,由于它支持最基本的机制和技术,所以保证不同的应用环境下的可移植性.
  该规范定义了GSS-API事务和基本元素,并独立于基本的机制和程序设计语言环境,并借助于其它相关的文档规范实现.
  如果我们在服务端打开GSSAPIAuthentication配置项,如下:
  [root@server ~]#vim /etc/ssh/sshd_config
  ........
  GSSAPIAuthentication yes
  GSSAPICleanupCredentials yes
  那么在客户端登录服务端会用gssapi-keyex,gssapi-with-mic进行身份校验,同样客户端也要支持这种身份验证,如下:
  [root@client ~]#vim /etc/ssh/ssh_config
  GSSAPIAuthentication yes
  GSSAPIDelegateCredentials yes
  我们在客户端连接SSH服务端,如下:
  ssh -v 192.168.1.11
  .................
  debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
  debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
  debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
  debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
  我们看到如下的信息:
  debug1: Unspecified GSS failure. Minor code may provide more information
  No credentials cache found
  debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
  debug1: Next authentication method: gssapi-keyex
  debug1: No valid Key exchange context
  说明SSH登录时采用GSSAPI的方式进行身份验证,但我们的系统不支持.
  最后如果我们不用这种方式进行身份验证的话,建议关闭这个选项,这样可以提高验证时的速度.
  10. ssh自定义安全设置
  1) 为了ssh登陆的时候加一层保护,可以修改默认端口。修改ssh服务配置文件/etc/ssh/sshd_config
  port 2222
  这样远程连接时加短裤
  #ssh 192.168.1.83 -p 2222
  2) ssh使用时加-l后面跟用户名,表示登陆到对方的这个用户下面。
  #ssh -l wangshibo 192.168.1.83 -p 2222
  等同于
  #ssh wangshibo@192.168.1.83 -p 2222
  3) 限制ssh登陆的来源ip,白名单设置 (hosts.allow优先级最高,具体参考:Linux服务器安全登录设置记录)
  一是通过iptables设置ssh端口的白名单,如下设置只允许192.168.1.0/24网段的客户机可以远程连接本机
  #vim /etc/sysconfig/iptables
  -A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 2222 -j ACCEPT
  二是通过/etc/hosts.allow里面进行限制(如下),/etc/hosts.deny文件不要任何内容编辑,保持默认!
  #vim /etc/hosts.allow
  sshd:192.168.1.*,192.168.9.*,124.65.197.154,61.148.60.42,103.10.86.7:allow
  sshd:all:deny
  4)仅允许特定的用户通过SSH登陆
  如不允许root用户登录;
  只允许几个指定的用户登录(比如wangshibo、guohuihui、liuxing用户)
  禁止某些指定的用户登录(比如zhangda,liqin用户)
  但是要注意:设置的这几个用户必须同时存在于本机和对方机器上
  修改ssh服务配置文件/etc/ssh/sshd_config
  PermitRootLogin no //将yes修改为no
  AllowUsers wangshibo guohuihui liuxing //这个参数AllowUsers如果不存在,需要手动创建,用户之间空格隔开
  DenyUsers zhagnda liqin //这个参数DenyUsers如果不存在,需要手动创建,用户之间空格隔开
  也可以设置仅允许某个组的成员通过ssh访问主机。
  AllowGroups wheel ops
  实例说明:
  1)只允许指定用户进行登录(白名单):
  在 /etc/ssh/sshd_config 配置文件中设置 AllowUsers 选项。格式如下:
  AllowUsers root grace kevin app
  表示只允许grace用户、kevin用户通过ssh登录本机。
  AllowUsers root@192.168.10.10 app@192.168.10.11 kevin@192.168.10.13
  表示只允许从192.168.10.10登录的root用户、从192.168.10.11登录的app用户、从192.168.10.13登录的kevin用户可以通过ssh登录本机。
  2)只拒绝指定用户进行登录(黑名单):)
  在/etc/ssh/sshd_config配置文件中设置DenyUsers选项。格式如下:
  DenyUsers wangbo linan zhangyang
  表示拒绝wangbo、linan和zhangyang用户通过ssh登录本机。
  需要注意的是:
  - AllowUsers、DenyUsers跟后面的配置之间使用TAB键进行隔开
  - 多个百名单或黑名单之间使用空格隔开
  例子:
  [root@Centos6 ~]# cat /etc/ssh/sshd_config
  .......
  AllowUsers root@192.168.10.202 app@192.168.10.200 kevin@192.168.10.202
  [root@Centos6 ~]# /etc/init.d/sshd restart
  [root@Centos6 ~]# cat /etc/ssh/sshd_config
  .......
  AllowUsers root app kevin
  [root@Centos6 ~]# /etc/init.d/sshd restart
  [root@Centos6 ~]# cat /etc/ssh/sshd_config
  .......
  DenyUsers wangbo linan zhangyang
  [root@Centos6 ~]# /etc/init.d/sshd restart
  如下,由于已经允许了app和root登录,则后面针对root@192.168.10.202和app@192.168.10.200的限制就无效了(两者别放在一起配置)
  [root@Centos6 ~]# cat /etc/ssh/sshd_config
  .......
  AllowUsers app root root@192.168.10.202 app@192.168.10.200
  [root@Centos6 ~]# /etc/init.d/sshd restart
  ######## 还可以使用pam规则限制ssh登录 ########
  1)允许指定的用户(比如kevin、grace账号)进行登录
  在/etc/pam.d/sshd文件第一行加入,一定要在第一行,因为规则是自上而下进行匹配的。
  auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
  然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,不用重新启动sshd服务。
  最后重启sshd服务即可!
  操作如下:
  [root@docker-test1 ~]# vim /etc/pam.d/sshd
  #%PAM-1.0
  auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
  ........
  [root@docker-test1 ~]# touch /etc/sshusers
  [root@docker-test1 ~]# vim /etc/sshusers
  kevin
  grace
  [root@docker-test1 ~]# /etc/init.d/sshd restart
  2)pam规则也可以写成deny的。比如拒绝kevin、grace账号进行登录
  操作如下:
  [root@docker-test1 ~]# vim /etc/pam.d/sshd
  #%PAM-1.0
  auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed
  ........
  [root@docker-test1 ~]# touch /etc/sshusers
  [root@docker-test1 ~]# vim /etc/sshusers
  kevin
  grace
  [root@docker-test1 ~]# /etc/init.d/sshd restart
  3)pam规则可以使用group限制。
  允许规则:
  auth required pam_listfile.so item=group sense=allow file=/etc/security/allow_groups onerr=fail
  禁止规则:
  auth required pam_listfile.so item=group sense=deny file=/etc/security/deny_groups onerr=succeed
  操作如下:
  [root@docker-test1 ~]# vim /etc/pam.d/sshd
  #%PAM-1.0
  auth required pam_listfile.so item=group sense=allow file=/etc/security/allow_groups onerr=fail
  新建一个组,组名为bobo,然后将kevin和grace添加到这个bobo组内
  [root@docker-test1 ~]# groupadd bobo
  [root@docker-test1 ~]# gpasswd -a kevin bobo
  Adding user kevin to group bobo
  [root@docker-test1 ~]# usermod -G bobo grace
  [root@docker-test1 ~]# id kevin
  uid=1000(kevin) gid=1000(kevin) groups=1000(kevin),1002(bobo)
  [root@docker-test1 ~]# id grace
  uid=1001(grace) gid=1001(grace) groups=1001(grace),1002(bobo)
  在/etc/security/allow_groups文件按中加入组名(注意如果不加root,则root就不能被允许登录了)
  [root@docker-test1 ~]# vim /etc/security/allow_groups
  bobo
  [root@docker-test1 ~]# /etc/init.d/sshd restart
  如上设置后,则只有kevin用户能被允许登录!
  如果是禁止规则,则第一行改为下面内容:
  auth required pam_listfile.so item=group sense=deny file=/etc/security/deny_groups onerr=succeed
  除此之外,禁止某些用户ssh登录,可以  使用passwd或usermod命令进行账号锁定
  5)取消密码验证,只用密钥对验证
  修改ssh服务配置文件/etc/ssh/sshd_config
  PasswordAuthentication no
  PubkeyAuthentication yes
  6)给账号设置强壮的密码:将密码保存到文本进行复制和粘帖就可以了
  # yum -y install expect
  # mkpasswd -l 128 -d 8 -C 15 -s 10
  lVj.jg&sKrf0cvtgmydqo7qPotxzxen9mefy?ej!kcaX2gQrcu2ndftkeamllznx>iHikTagiVz0$cMtqOcIypkpd,vvD*kJhs3q@sb:CiCqgtqdqvse5lssfmranbtx
  参数说明:
  -l 密码长度
  -d 多少个数字
  -C 大写字母个数
  -s 特殊符号的个数
  7)只允许通过指定的网络接口来访问SSH服务,(如果本服务器有多个IP的时候)
  仍然是修改/etc/ssh/sshd_config,如下:
  ListenAddress 192.168.1.15  //默认监听的是0.0.0.0
  这样,就只允许远程机器通过ssh连接本机的192.168.1.15内网ip来进行登陆了。
  8)禁止空密码登录
  如果本机系统有些账号没有设置密码,而ssh配置文件里又没做限制,那么远程通过这个空密码账号就可以登陆了,这是及其不安全的!
  所以一定要禁止空密码登陆。修改/etc/ssh/sshd_config,如下:
  PermitEmptyPasswords no //这一项,默认就是禁用空密码登陆
  9) ssh_config和sshd_config
  ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。sshd_config的配置一般都比较熟悉,下面单独说下ssh_config针对客户端的配置文件:
  [root@dns01 dns_rsync]# cat /etc/ssh/ssh_config
  # Site-wide defaults for various options
  Host *
  ForwardAgent no
  ForwardX11 no
  RhostsAuthentication no
  RhostsRSAAuthentication no
  RSAAuthentication yes
  PasswordAuthentication yes
  FallBackToRsh no
  UseRsh no
  BatchMode no
  CheckHostIP yes
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/identity
  Port 22
  Cipher blowfish
  EscapeChar ~
  下面对上述选项参数逐进行解释:
  # Site-wide defaults for various options
  带"#"表示该句为注释不起作,该句不属于配置文件原文,意在说明下面选项均为系统初始默认的选项。说明一下,实际配置文件中也有很多选项前面加有"#"注释,虽然表示不起作用,其实是说明此为系统默认的初始化设置。
  Host *
  "Host"只对匹配后面字串的计算机有效,"*"表示所有的计算机。从该项格式前置一些可以看出,这是一个类似于全局的选项,表示下面缩进的选项都适用于该设置,可以指定某计算机替换*号使下面选项只针对该算机器生效。
  ForwardAgent no
  "ForwardAgent"设置连接是否经过验证代理(如果存在)转发给远程计算机。
  ForwardX11 no
  "ForwardX11"设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。
  RhostsAuthentication no
  "RhostsAuthentication"设置是否使用基于rhosts的安全验证。
  RhostsRSAAuthentication no
  "RhostsRSAAuthentication"设置是否使用用RSA算法的基于rhosts的安全验证。
  RSAAuthentication yes
  "RSAAuthentication"设置是否使用RSA算法进行安全验证。
  PasswordAuthentication yes
  "PasswordAuthentication"设置是否使用口令验证。
  FallBackToRsh no
  "FallBackToRsh"设置如果用ssh连接出现错误是否自动使用rsh,由于rsh并不安全,所以此选项应当设置为"no"。
  UseRsh no
  "UseRsh"设置是否在这台计算机上使用"rlogin/rsh",原因同上,设为"no"。
  BatchMode no
  "BatchMode":批处理模式,一般设为"no";如果设为"yes",交互式输入口令的提示将被禁止,这个选项对脚本文件和批处理任务十分有用。
  CheckHostIP yes
  "CheckHostIP"设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为"yes"。
  StrictHostKeyChecking no
  "StrictHostKeyChecking"如果设为"yes",ssh将不会自动把计算机的密匙加入"$HOME/.ssh/known_hosts"文件,且一旦计算机的密匙发生了变化,就拒绝连接。
  IdentityFile ~/.ssh/identity
  "IdentityFile"设置读取用户的RSA安全验证标识。
  Port 22
  "Port"设置连接到远程主机的端口,ssh默认端口为22。
  Cipher blowfish
  "Cipher"设置加密用的密钥,blowfish可以自己随意设置。
  EscapeChar ~
  "EscapeChar"设置escape字符。
  =================================================================================
  比如说,A机器的ssh端口是22,B机器的端口是22222,一般来说A机器ssh连接B机器的时候是使用-p22222指定端口。但是可以修改A机器的/etc/ssh/ssh_config文件中的
  Port为22222,这样A机器ssh连接的时候就默认使用22222端口了。
  ######## 去掉SSH公钥检查的方法(交互式yes/no)########
  SSH公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖SSH协议的自动化任务,就需要一种手段能够绕过SSH的公钥检查。
  SSH连接远程主机时,会检查主机的公钥。如果是第一次连接该主机,会显示该主机的公钥摘要,弹出公钥确认的提示,提示用户是否信任该主机(Yes/no)。当选择Yes接受,就会将该主机的公钥追加到文件 ~/.ssh/known_hosts 中。当再次连接该主机时,就不会再提示该问题了。
  SSH公钥检查有好处,但首次连接时会导致某些自动化任务中断,或者由于 ~/.ssh/known_hosts 文件内容清空,导致自动化任务中断。
  去掉SSH公钥检查的方法:
  1)SSH客户端的StrictHostKeyChecking 配置指令,可以实现当第一次连接服务器时,自动接受新的公钥。只需要修改 /etc/ssh/ssh_config 文件,包含下列语句:
  StrictHostKeyChecking no
  2)或者在ssh连接命令中使用-oStrictHostKeyChecking=no参数
  [root@puppet ~]# ssh -p22222 172.168.1.33 -oStrictHostKeyChecking=no
  或者
  [root@puppet ~]# ssh -p22222 172.168.1.33 -oUserKnownHostsFile=/dev/null  -oStrictHostKeyChecking=no
  ######## ssh 登陆忽略known_hosts文件 ########
  使用ssh登录远程机器,同时会把ssh信息记录在本地的~/.ssh/known_hsots文件中。如果出现ssh冲突了,需要手动删除或修改known_hsots里面对应远程机器的ssh信息。那么如果忽略掉这个known_hosts的访问? 操作如下:
  1)修改/etc/ssh/sshd_config 配置文件中的选项 IgnoreUserKnownHosts  改成 yes ,重启sshd服务即可。
  2)如果还是不行,就在/etc/ssh/sshd_config 配置文件中再加入一下几行,然后再重启sshd服务。
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  ######## ansible中取消ssh交换式yes/no ########
  配置文件/etc/ansible/ansible.cfg的 [defaults] 中(打开注释)
  # uncomment this to disable SSH key host checking
  host_key_checking = False
  ######## ssh只允许使用key登录, 禁止使用密码登录 ########
  1) 生产公私钥文件
  # ssh-keygen -t rsa
  上面命令一路回车, 此时在/root/.ssh/目录下生成了2个文件,id_rsa为私钥,id_rsa.pub为公钥。
  私钥自己下载到本地电脑妥善保存(丢了服务器可就没法再登陆了),为安全,建议删除服务器端的私钥。公钥则可以任意公开。
  使用以下命令将公钥导入到系统中:
  # cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
  2) 修改SSH的配置文件/etc/ssh/sshd_config
  # vim /etc/ssh/sshd_config
  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys
  #默认PasswordAuthentication 为yes,即允许密码登录,改为no后,禁止密码登录
  PasswordAuthentication no
  3) 重启SSH服务
  # /etc/init.d/sshd restart
  4) 使用私钥登录xshell或securecrt客户端了
  ######## SSH服务启动报错案例 ########
  在某台服务器上部署了sftp服务,最后发现sftp远程登录正常,但是ssh远程登录失败(尽管已经输入了正确的用户名和密码)。
  [root@kevin ssh]# service sshd restart
  Stopping sshd: [ OK ]
  Starting sshd:/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
  /etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
  Starting sshd: [ OK ]
  如上启动后,远程ssh登录这台机器,输入正确的用户名和密码,则会登录失败!!
  [root@kevin ssh]# ssh -V
  OpenSSH_7.6p1, OpenSSL 1.0.1e-fips 11 Feb 2013
  原因是新版本的openssh不支持以上参数,需要修改sshd的配置文件。
  修改内容如下,否则还是无法通过ssh登录这台服务器:
  [root@kevin ssh]# vim /etc/ssh/sshd_config
  .......
  ##去掉前面的注释,允许root通过ssh登录
  PermitRootLogin yes
  ##注释掉下面三个参数
  #GSSAPIAuthentication yes
  #GSSAPICleanupCredentials yes
  #UsePAM yes
  再次重启ssh,上面的报错信息就没有了。此时远程ssh登录就OK了!
  [root@kevin ssh]# service sshd restart
  Stopping sshd: [ OK ]
  Starting sshd: [ OK ]
  ######## SSH连接超时时间(timed out)设置 ########
  1)使用下面命令连接,可以减少ssh连接超时等待的时间
  # ssh -o ConnectTimeout=5 -p22 root@172.16.60.20
  或者修改sshd_config文件里面的UseDNS 选项,改为UseDNS no
  2)设置SSH超时时间的方法
  # vim /root/.bash_profile
  export TMOUT=1000000 #以秒为单位。或者修改/etc/profile文件也可以。
  # source /root/.bash_profile
  # vim /etc/ssh/sshd_config
  ClientAliveInterval=60
  # service sshd restart
  意思是每过一分钟,sshd都会和ssh client打个招呼 (即服务器端给客户端发送一个"空包"),检测它是否存在,如果不存时则断开连接!
  这里需要注意: 设置完成后,要退出ssh远程连接,再次登录后才可以生效。因为要再读取一次~/bash_profile文件。
  总结:
  在ClientAliveInterval(/etc/ssh/sshd_config)、环境变量TMOUT(在/etc/profile或.bash_profile中设置)以及putty的"Seconds between keepalives"(默认为0)这些设置方法中,
  经检测验证,只有TMOUT可以控制ssh连接在空闲时间超时,自动断开连接的时间,数字单位为"秒"。在设置了TMOUT后(非0),另外两个变量则不起作用的。
  另外,特别提醒的是,设置好ssh的登录超时时间以后,记得退出重新登录或重启系统,以使配置生效。
  3)SSH禁止超时设置
  SSH默认过一段时间会超时,有时候正在执行着脚本,出去一会回来就断开了,输出信息都看不到了,很是无奈!
  其实禁止SSH自动超时最简单的办法就是:每隔一段时间在客户端和服务器之间发送一个"空包"!!!!!
  至于到底是从客户端发给服务器,还是服务器发给客户端其实都不重要,重要的是需要它们之间要有通信。
  下面介绍两种阻止SSH连接超时的方法(推荐方法二):
  方法一:客户端阻止SSH超时
  编辑本地的SSH配置文件:~/.ssh/config
  # vim ~/.ssh/config
  ServerAliveInterval 120
  这个设置会让客服端机器在使用SSH连接服务器时,每隔120秒给服务器发送一个"空包",保持它们之间的连接。
  方法二:服务器端阻止SSH超时
  如果有服务器端的root权限,可以在服务端进行配置,这样就不需要每个客户端都单独配置。
  # vim /etc/ssh/sshd_config
  ClientAliveInterval 120
  ClientAliveCountMax 720
  第一行,表示每隔120秒向客户端发送一个"空包",以保持于客户端的连接。
  第二行,表示总共发送720次"空包",之后断开它们之间的连接,也就是:120秒   720 = 86400 秒 = 24小时 后。
  最后重启sshd服务,再打开新终端进行ssh连接就可以了,在24小时内不会出现连接超时。
  # /etc/init.d/ssh restart
  ######## SSH公钥下发无效 ########
  ssh的.pub公钥已经拷贝到远程主机的.ssh/authorized_keys文件里,但是ssh跳转时,仍然要输入密码!!即公钥下发后,ssh信任关系没有生效!
  解决办法:
  1)远程主机对应用户家目录下的.ssh目录必须是700或755权限,绝不能是775或777权限!即只对该用户有写权限!(一般设置700权限)
  2)远程主机对应用户家目录下的.ssh/authorized_keys文件权限必须是600权限!即只对该用户有写权限!(一般设置600权限)
  3)远程主机对应用户家目录的权限必须是700或755权限,绝不能是775或777权限!即只对该用户有写权限!(一般设置700权限),大多数情况下都是由于这个原因导致的!!!
  如果.ssh目录和.ssh/authorized_keys文件权限对别的用户有写权限,则就会导致ssh认证失败!
  =====================================================================
  例如在一次ansible自动化部署中,之前配置好的ssh信任关系失效,报错如下:
  {"changed": false, "msg": "SSH Error: data could not be sent to remote host "172.16.60.240". Make sure this host can be reached over ssh", "unreachable": true}
  查看现象,发现之前配置好的ssh信任关系失效了!!
  [root@bz3devjenci1002 lx0319]# ssh -p22 kevin@172.16.60.240
  Authorized only. All activity will be monitored and reported
  kevin@172.16.60.240"s password:
  分析原因及解决办法:
  登录172.16.60.240这台机器的kevin用户下,发现authorized_keys文件里确实已经传入了ansible主节点的id_rsa.pub公钥内容,并且下面两个权限都正确:
  [kevin@bz4autestap1002 ~]$ ll -d .ssh
  drwx------ 2 kevin kevin 4096 Jul 24 10:48 .ssh #700权限是正确的
  [kevin@bz4autestap1002 ~]$ ll .ssh/authorized_keys
  -rw------- 1 kevin kevin 2412 Jul 24 10:45 .ssh/authorized_keys #600权限也是正确的
  然后查看kevin用户目录权限,发现是777!这才是问题根源!该用户目录权限不能对别的用户有写权限,否则会造成ssh认证失败!
  [kevin@bz4autestap1002 ~]$ ll -d /home/kevin
  drwxrwxrwx 14 kevin kevin 4096 Jul 24 10:48 /home/kevin
  修改为600权限即可
  [kevin@bz4autestap1002 ~]$ chmod 600 /home/kevin
  [kevin@bz4autestap1002 ~]$ ll -d /home/kevin
  drwx------ 14 kevin kevin 4096 Jul 24 10:48 /home/kevin
  再次在远程尝试ssh认证跳转
  [root@bz3devjenci1002 lx0319]# ssh -p22 kevin@172.16.60.240
  [kevin@bz4autestap1002 ~]$
  ######## Centos7修改ssh默认端口的方法 ########
  CentOS 7 对于防火墙这一块的设置有一定的修改,修改ssh端口后,必须关闭防火墙和selinux之后才能正常重启sshd服务,否则启动失败。操作记录如下:
  1)修改/etc/ssh/sshd_config #这个是修改ssh服务端配置文件。
  [root@k8s-master01 ~]# vim /etc/ssh/sshd_config
  .........
  #Port 22 #这行最好去掉#号,防止配置失效以后不能远程登录,还得去机房修改,等修改以后的端口能使用以后在注释掉
  Port 6666 #下面添加这一行
  [root@k8s-master01 ~]# vim /etc/ssh/ssh_config #这个是修改ssh客户端配置文件,一般可以不用修改。
  ........
  # Port 22
  Port 6666
  =====================================================================
  ssh客户端配置文件使用场景:
  比如A机器的/etc/ssh/ssh_config客户端配置文件的ssh端口是22,B机器的/etc/ssh/sshd_config服务端配置文件是6666
  那么A机器ssh连接B机器时就要带上"-p6666", 如果A机器的ssh客户端配置文件的端口也是6666的话,就可以直接ssh连接B机器了。
  =====================================================================
  2)要关闭防火墙和selinux。否则,centos7修改ssh端口后会启动sshd服务失败!一定要注意这个!
  [root@k8s-master01 ~]# systemctl disable firewalld
  [root@k8s-master01 ~]# systemctl stop firewalld
  [root@k8s-master01 ~]# firewall-cmd --state
  not running
  [root@k8s-master01 ~]# cat /etc/sysconfig/selinux
  .......
  SELINUX=disabled
  [root@k8s-master01 ~]# setenforce 0
  [root@k8s-master01 ~]# getenforce
  Disabled
  这样,在修改ssh端口后,就能顺利启动sshd服务了!
  =====================================================================
  这里还需要注意下:如果是打开了防火墙或selinux,则需要将修改的sshd端口添加到对应的防火墙规则中(默认只加了ssh的22端口)
  a)firewalld配置
  添加到防火墙:
  # firewall-cmd --zone=public --add-port=6666/tcp --permanent (permanent是保存配置,不然下次重启以后这次修改无效)
  重启:
  #firewall-cmd --reload
  查看添加端口是否成功,如果添加成功则会显示yes,否则no
  # firewall-cmd --zone=public --query-port=6666/tcp
  b)selinux配置
  使用以下命令查看当前SElinux 允许的ssh端口:
  # semanage port -l | grep ssh
  添加6666端口到 SELinux
  # semanage port -a -t ssh_port_t -p tcp 6666
  然后确认一下是否添加进去
  # semanage port -l | grep ssh
  如果成功会输出
  ssh_port_t tcp 6666, 22
  c)然后就可以顺利启动sshd服务了。

华为鸿蒙阿里云盘古蚂蚁图计算14项世界互联网领先科技成果发布日前,由国家互联网信息办公室浙江省人民政府主办的2021年世界互联网领先科技成果发布活动在乌镇互联网国际会展中心成功举行,这是第六次面向全球举行世界互联网领先科技成果发布活动。发布乌镇进行时这些世界互联网领先科技成果不简单中国青年报客户端讯(中青报中青网记者杨月)9月26日下午,由国家互联网信息办公室浙江省人民政府主办的2021年世界互联网领先科技成果发布活动在乌镇互联网国际会展中心举行,这是乌镇第自豪!伴随孟晚舟回国,华为近日四喜临门,任正非如虎添翼华为大公主回国的消息,应该说是近期最火爆的消息,而此时,一位77岁的老人应该比任何人都要开心,因为他盼这一天的到来已经盼了足足1028天了。事实上华为这段时间可谓是喜事连连,伴随着FB正将我们引向元宇宙?真正目标或是收集更多数据并从中获利来源腾讯科技审校金鹿腾讯科技讯9月27日消息,社交网络巨头Facebook负责全球事务和沟通的副总裁尼克克莱格(NickClegg),将于美国当地时间周一阐述这家科技巨头对名为元宇东风汽车以出行平台支撑业务转型数字经济应用场景案例说产业互联网系列(三十一)东风汽车以出行平台支撑业务转型发布日期20210928来源北京软件和信息服务业协会北京产业互联网既肩负着再造数字经济万亿级产业集群的重无线安装,1080P高清画面,智能互联,小米室外摄像机电池版体验大家在选择家用摄像头的时候会考虑哪些方面,是智能清晰度方便安装还是颜值?其实我觉得这些都是我们选择家用摄像头的重要考量方向。最近发现村里人都开始安装摄像头,毕竟农村的安防措施远远比阿里系集体进入微信生态?张小龙早已留了一手据媒体报道,9月28日,阿里确认旗下App正陆续接入微信支付,包括淘宝闲鱼盒马等应用正在等待微信支付审核通过。阿里还强调,会继续与其他平台一起面向未来,相向而行。事实上,在工信部要技术的未来有关2050年技术领域的十个预言一纳米机器人将把我们的大脑直接接入云端未来的技术纳米机器人。到2050年,纳米机器人将把我们的大脑直接插入云端,它将使我们从神经系统内获得完全沉浸式的虚拟现实。就像我们用智能手机做骄兵必败!快手暴跌84,腾讯阿里腰斩,大厂翻身无望方向互联网科技撰大厂研究猿日期2021年9月28日快手市值从1。73万亿港币跌至如今的3000亿港币,仅用时210天。腾讯去年最高市值超九千亿美金,如今只剩5200亿美金,下跌45三星机皇价格跳水,GalaxyNote20Ultra直降2300俗话说买新不买旧,新机各方面的表现往往是要比上代机型更强的,但是想要入手一款性能较强,各方面表现都不错的新机,价格上可能就稍高一些。或许之前发布的旧旗舰,又在价格上有大幅度下调的机米家跑步机发布采用极简折叠设计今日米家跑步机也发布了,这款跑步机外观采用极简折叠设计,一人即可轻松完成收纳摆放。用旋钮解锁后,可以快速完成折叠,折叠厚度仅为19。2cm,搭配滚轮,不用时也可轻松收纳。跑步平台采
4月8日A股新能源上市公司利好消息1运达股份(300772)掌握全系列风电机组产品的整机核心设计技术和控制源代码风电机组配套零部件从外部采购。2明阳智能(601615)风电业务强劲增长一季度净利同比大增逾4倍。公司一线调查腾讯的毕业生们2021年,腾讯迎来营收增速十年来最低的一年。乐问,是腾讯非常重要的内部交流平台,在上面,员工匿名或用实名畅所欲言。哪款产品体验不够好,对公司任何发展战略有异议,或有谁遇到了不公平苹果电池寿命80就要更换吗?苹果6电池多少钱?锂电池的损耗是不可避免的,iPhone用快充对电池健康度的影响非常小,而电池性能在短时间内下降,往往是不合理使用手机的行为或习惯导致的。边充电边使用手机,因为充放电同时进行,电池的马斯克进入Twitter董事会,特斯拉大股东们怎么看?很多粉丝仍沉浸于马斯克花费28。9亿美元,收购了9。2Twitter股份的喜悦中。不过特斯拉最大的股东之一,巴伦资本的首席执行官RonBaron认为这一消息并不重要。当地时间周四,借助腾讯电脑管家安装纯净版GoogleChrome,然后使用谷歌搜索所需借助腾讯电脑管家安装纯净版GoogleChrome,然后使用谷歌搜索所需的软件文件安装包。2022年4月8日021511火狐浏览器谷歌浏览器微软浏览器都是优质的浏览器。但是因为各种vivo新机号称开启折叠屏2。0时代,今年行业出货量有望翻数倍未来有望成为高端机的主流机种。今日重要性据行业媒体techweb消息,vivoXFold折叠屏手机线下海报曝光,号称开启折叠屏2。0时代,产品将于4月11日发布。此外集微咨询4月6小米北京新总部概念规划,科技巨头新大楼都长这样?FTA建筑设计总部位于德国柏林,于美国迈阿密及中国上海设有设计机构。FTA崇尚国际化专业化一体化的品牌精神。作为一家专业化的设计集团公司,FTA主要聚焦于绿色办公产业园区城市综合体资讯极氪001将于5月1日起涨价,具体调价及权益方案月底前公布文懂车帝原创常思玥懂车帝原创行业日前,懂车帝从极氪官方获悉,极氪001将于5月1日起上调车辆价格,权益以及价格调整方案将于2022年4月30日之前公布。极氪宣布5月1日起上调价格极iPhone13Pro只舍得买128GB,够用三年吗?iPhone13系列是历年来,标准版和Pro版配置区别最大的一次。120HZ高刷,promotion可变刷新率,等效77mm的长焦镜头,GPU提升50的满血A15,高达6GB的运存清朗打击网络直播领域乱象直播软色情何时清互联网的快速发展,现如今发展成为了人们必不可少的一项生活必备品,越来越多的人通过网络来了解外界汲取知识和相互交流,然而伴随着快速发展也一路伴随争议。数据调查,中国未成年人的互联网普不要利润了,12512G新机低至2499,1亿像素骁龙888Plus处理器要说今年最卷的手机品牌,除了小米OV,还有摩托罗拉,我还停留在去年最便宜的骁龙870旗舰里,今年摩托罗拉又拿出来了最便宜的骁龙888Plus和骁龙8Gen1旗舰,开年就搞这么大,虽