bash: ssh: command not found
解决办法;
yum install -y openssh-server openssh-clinets
(1)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/ssh/sshd_config文件里界说,然后重启sshd服务即可。这两种做法是共同的作用!
Banner /etc/sshfile
长途登陆:
[root@linux-node2 ~]# ssh 192.168.1.117
this is 192.168.1.117
[root@host-192-168-1-117 ~]#
1 2 | 关于非22端口(比方22222)状况下的ssh-copy-id的运用,需求这样用: ssh-copy-id -i /root/.ssh/id_rsa.pub '-p 22222 root@192.168.18.18' |
(3)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"
原因:
伪终端将无法分配,因为标准输入不是终端。
解决办法:
需求增加-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"
(4)ssh长途登陆缓慢问题
解决办法:
编译/etc/ssh/sshd_config装备文件:
UseDNS no
GSSAPIAuthentication no
然后重启sshd服务即可!
(6)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
(7)ssh衔接超时被踢出问题解决
当运用xshell,SecureCRT等客户端拜访linux服务器,有时分会呈现终端定时超时被踢出的状况。A8站源码交易平台
下面介绍三种办法来避免超时被踢出的办法,后两种状况的设置办法以及经过设置shell变量来到达此意图的办法:
修正两项参数后如下:
----------------------------
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
sudo /etc/init.d/ssh restart
3、echo export TMOUT=1000000 >> /root/.bash_profile; source .bash_profile
在Linux 终端的shell环境中经过设置环境变量TMOUT来阻挠超时。假如显现空白,表明没有设置, 等于运用默许值0, 一般状况下应该是不超时. 假如大于0, 能够在如/etc/profile之类文件中设置它为0.
后来跳板机呈现了问题,计划重装这台机器,重装前撤销了其他机器里只答应跳板机ssh信赖联系,而且康复了暗码登陆功用:
[root@bastion-IDC ssh]# vim /etc/ssh/sshd_config
PermitEmptyPasswords yes
[root@bastion-IDC ssh]# service sshd restart
最终发现是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 #重启体系才干收效
2)GSSAPI身份验证.
GSSAPIAuthentication 是否答应运用根据 GSSAPI 的用户认证.默许值为"no".仅用于SSH-2.
GSSAPICleanupCredentials 是否在用户退出登录后主动毁掉用户凭据缓存。默许值是"yes".仅用于SSH-2.
需求特别留意的是:
GSSAPI是公共安全业务运用程序接口(GSS-API)
公共安全业务运用程序接口以一种一致的形式为运用者供给安全业务,因为它支撑最根本的机制和技能,所以确保不同的运用环境下的可移植性.
该标准界说了GSS-API业务和根本元素,并独立于根本的机制和程序设计语言环境,并借助于其它相关的文档标准完成.
那么在客户端登录服务端会用gssapi-keyex,gssapi-with-mic进行身份校验,相同客户端也要支撑这种身份验证,如下:
咱们在客户端衔接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
最终假如咱们不必这种办法进行身份验证的话,主张封闭这个选项,这样能够进步验证时的速度.
这样长途衔接时加短裤
#ssh 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
也能够设置仅答应某个组的成员经过ssh拜访主机。
AllowGroups wheel ops
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 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 |
5)撤销暗码验证,只用密钥对验证
修正ssh服务装备文件/etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
7)只答应经过指定的网络接口来拜访SSH服务,(假如本服务器有多个IP的时分)
仍然是修正/etc/ssh/sshd_config,如下:
ListenAddress 192.168.1.15 //默许监听的是0.0.0.0
8)制止空暗码登录
假如本机体系有些账号没有设置暗码,而ssh装备文件里又没做约束,那么长途经过这个空暗码账号就能够登陆了,这是及其不安全的!
所以必定要制止空暗码登陆。修正/etc/ssh/sshd_config,如下:
PermitEmptyPasswords no //这一项,默许便是禁用空暗码登陆
centos7下修正ssh默许的22端口后,呈现重启ssh失利的现象。或许原因:
selinux没有封闭
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled' /etc/sysconfig/selinux
# reboot
-------------------------------------------去掉SSH公钥查看的办法(交互式yes/no)------------------------------------------------
去掉SSH公钥查看的办法:
1)SSH客户端的StrictHostKeyChecking 装备指令,能够完成当榜初次衔接服务器时,主动承受新的公钥。只需求修正 /etc/ssh/ssh_config 文件,包括下列句子:
StrictHostKeyChecking no
====================ansible中撤销ssh交换式yes/no==================
装备文件/etc/ansible/ansible.cfg的[defaults]中(翻开注释)
# uncomment this to disable SSH key host checking
host_key_checking = False
1 2 3 4 5 6 7 | 长途登录linux服务器,怎么设置终端失效时刻(即过了多久不操作,终端行将失效)。办法如下: [root@mq-console-nameserver ~]# vim /etc/profile ...... export TMOUT=600 [root@mq-console-nameserver ~]# source /etc/profile 如上设置后,登录这台服务器的终端在10分钟内不做操作,则该终端就将失效! |
<p font-size:16px;color:#4d4d4d;background-color:#ffffff;"="" style="word-wrap: break-word; font-family: "sans serif", tahoma, verdana, helvetica; font-size: 12px; white-space: normal;">=======================SSH服务发动报错事例=======================
在某台服务器上布置了sftp服务,最终发现sftp长途登录正常,可是ssh长途登录失利(虽然现已输入了正确的用户名和暗码)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | [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 ] |