Linux下ssh的使用
更多内容推荐微信公众号,欢迎关注:

摘抄自:https://www.cnblogs.com/kevingrace/p/6110842.html
对于linux运维工作者而言,使用ssh远程远程服务器是再熟悉不过的了!对于ssh的一些严格设置也关系到服务器的安全维护,今天在此,就本人工作中使用ssh的经验而言,做一些总结记录来下。
-bash: ssh: command not found
解决办法;
yum install -y  openssh-server openssh-clinets
做法一:其实很简单,这些信息是在目标机器的/etc/motd文件里自定义的
[root@monit-server ~]# cat /etc/motd 
===================================
|||||||||||||||||||||||||||||||||||
===================================
HOSTNAME: monit-server
IPADDRES: 192.168.1.15
===================================
IDC监控机
===================================
/root/.ssh/id_rsa.pub  '-p 22222 root@192.168.18.18'
3)这样,本机登录到上面远程机器(B机器)就不用输入密码
#ssh user@ip
(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"
但是在执行脚本的时候报错如下:
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"
(4)ssh远程登陆缓慢问题
解决办法:
编译/etc/ssh/sshd_config配置文件:
UseDNS no
GSSAPIAuthentication no
然后重启sshd服务即可!
(5)ssh登录出现:permission denied(publickey.gssapi-with-mic)
解决方法:
修改/etc/ssh/sshd-config文件,将其中的:
PermitRootLogin no修改为yes
PubkeyAuthentication yes        
AuthorizedKeysFile     .ssh/authorized_keys前面加上#屏蔽掉
PasswordAuthentication no修改为yes
最后重启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
3)远程ssh连接时错误“ The X11 forwarding request was rejected!”
解决方法:
将sshd_config中 设置 X11Forwarding yes
重启sshd服务。
(7)ssh连接超时被踢出问题解决
当使用xshell,SecureCRT等客户端访问linux服务器,有时候会出现终端定期超时被踢出的情况。
下面介绍三种方法来防止超时被踢出的方法,后两种情况的设置方法以及通过设置shell变量来达到此目的的方法:
1、 配置服务器
#vi /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
sudo /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.
//将下面密码保存到文本进行复制、粘贴即可
lVj.jg&sKrf0cvtgmydqo7qPotxzxen9mefy?ej!kcaX2gQrcu2ndftkeamllznx>iHikTagiVz0$cMtqOcIypkpd,vvD*kJhs3q@sb:CiCqgtqdqvse5lssfmranbtx
参数说明:
-l  密码长度
-d  多少个数字
-C     大写字母个数
-s  特殊符号的个数
//默认监听的是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
--------------------------------------------ansible中取消ssh交换式yes/no-----------------------------------------------
配置文件/etc/ansible/ansible.cfg的[defaults]中(打开注释)
# uncomment this to disable SSH key host checking
host_key_checking = False
Linux下ssh的使用的更多相关文章
- Linux下SSH免密码登录
		转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ... 
- Linux下SSH+Firefox
		Linux下SSH+Firefox 简明FQ攻略 FQ的软件有很多,楼主原来在Windows下用过Tor(洋葱头).Puff.freegate等,一般只需要打开FQ软件,简单的设置后就可以FQ浏览了. ... 
- linux下ssh端口的修改和登录
		linux下ssh端口的修改和登录 首先修改配置文件 vi /etc/ssh/sshd_config 找到#Port 22一段,这里是标识默认使用22端口,添加如下一行: Port 50000 然后保 ... 
- Linux 下 SSH 远程超时解决方案
		Linux 下 SSH 远程超时解决方案 今天突然看到一个问题说是如何解决SSH远程超时的问题. 找了一点资料.用于解决这个需求~ 第一种:OpenSSH 配置文件设置 位于112行的 "C ... 
- 解决Linux下SSH超时自动断开
		title: 解决Linux下SSH超时自动断开 comments: false date: 2019-08-19 19:22:55 description: Linux 下 SSH 超时自动断开?? ... 
- hadoop搭建杂记:Linux下ssh免密码登陆
		关于ssh免密码登陆的问题 关于ssh免密码登陆的问题 linux下可以用ssh-keygen来生成公钥/私钥对 ①生成id_rsa和id_rsa.pub公钥/私钥对,自动在~/.ssh下生成文件(亦 ... 
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
		最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登 录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都 ... 
- Linux下SSH工具 PAC Manager的安装
		PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ... 
- Linux下 SSH远程管理服务
		第1章 SSH基本概述 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定 在进 ... 
- Linux下SSH Session复制
		羡慕Windows下secureCRT的Session Copy功能,一直在寻找Linux下类似的软件,殊不知SSH本身就支持此功能. 特别感谢阿干同学的邮件分享. 详细方法 ? 1 2 3 4 Li ... 
随机推荐
- 左连接,右连接和等值连接(left join,right join和inner join)
			left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ... 
- [NOI2016]旷野大计算
			Subtask0 造计算机神题.给一个忠告:珍爱生命,远离旷野大计算...... 代码在这里:戳我 Subtask1 给定\(a,b\):求\(-2a-2b\). 熟悉操作环境:\([-(a+b)]& ... 
- Android热修复原理(一)热修复框架对比和代码修复
			在Android应用开发中,热修复技术被越来越多的开发者所使用,也出现了很多热修复框架,比如:AndFix.Tinker.Dexposed和Nuwa等等.如果只是会这些热修复框架的使用那意义并不大,我 ... 
- 洛谷P3676 小清新数据结构题  【树剖 + BIT】
			题目链接 洛谷P3676 题解 我们先维护\(1\)为根的答案,再考虑换根 一开始的答案可以\(O(n)\)计算出来 考虑修改,记\(s[u]\)表示\(u\)为根的子树的权值和 当\(u\)节点产生 ... 
- MySQL总结小妙招
			mysql5.7版本,免登陆修改管理员密码: vim /etc/my.cnf 加入skip-grant-tables,重启MySQL 终端输入 mysql ,直接登录MySQL数据库,然后use my ... 
- vue入门教程
			vue视频教程(对vue有个概览,要掌握vue-cli的用法,对vue-router,vuex有基本的概念) https://www.imooc.com/learn/1091 1. vue-cli v ... 
- bzoj2757【scoi2012】Blinker的仰慕者
			题目描述 Blinker 有非常多的仰慕者,他给每个仰慕者一个正整数编号.而且这些编号还隐藏着特殊的意义,即编号的各位数字之积表示这名仰慕者对Blinker的重要度. 现在Blinker想知道编号介于 ... 
- 2018 “百度之星”程序设计大赛 - 初赛(A)度度熊学队列 list rope
			c++ list使用 #include <cstdio> #include <cstdlib> #include <cmath> #include <cstr ... 
- 【Asp.net入门3-04】使用jQuery-使用jQuery事件
- P1558 色板游戏
			P1558 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ... 
