更多内容推荐微信公众号,欢迎关注:

摘抄自: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的使用的更多相关文章

  1. Linux下SSH免密码登录

    转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...

  2. Linux下SSH+Firefox

    Linux下SSH+Firefox 简明FQ攻略 FQ的软件有很多,楼主原来在Windows下用过Tor(洋葱头).Puff.freegate等,一般只需要打开FQ软件,简单的设置后就可以FQ浏览了. ...

  3. linux下ssh端口的修改和登录

    linux下ssh端口的修改和登录 首先修改配置文件 vi /etc/ssh/sshd_config 找到#Port 22一段,这里是标识默认使用22端口,添加如下一行: Port 50000 然后保 ...

  4. Linux 下 SSH 远程超时解决方案

    Linux 下 SSH 远程超时解决方案 今天突然看到一个问题说是如何解决SSH远程超时的问题. 找了一点资料.用于解决这个需求~ 第一种:OpenSSH 配置文件设置 位于112行的 "C ...

  5. 解决Linux下SSH超时自动断开

    title: 解决Linux下SSH超时自动断开 comments: false date: 2019-08-19 19:22:55 description: Linux 下 SSH 超时自动断开?? ...

  6. hadoop搭建杂记:Linux下ssh免密码登陆

    关于ssh免密码登陆的问题 关于ssh免密码登陆的问题 linux下可以用ssh-keygen来生成公钥/私钥对 ①生成id_rsa和id_rsa.pub公钥/私钥对,自动在~/.ssh下生成文件(亦 ...

  7. linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录

    最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登 录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都 ...

  8. Linux下SSH工具 PAC Manager的安装

    PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ...

  9. Linux下 SSH远程管理服务

    第1章 SSH基本概述 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定 在进 ...

  10. Linux下SSH Session复制

    羡慕Windows下secureCRT的Session Copy功能,一直在寻找Linux下类似的软件,殊不知SSH本身就支持此功能. 特别感谢阿干同学的邮件分享. 详细方法 ? 1 2 3 4 Li ...

随机推荐

  1. [转帖]go的调度机制.

    调度器 主要基于三个基本对象上,G,M,P(定义在源码的src/runtime/runtime.h文件中) G代表一个goroutine对象,每次go调用的时候,都会创建一个G对象 M代表一个线程,每 ...

  2. [学习]仿照cnblog 搭建 Oracle RAC 双节点 困.. 后续做不下去了..

    1. 学习地址: https://blog.csdn.net/yuzifen?t=1 2. 克隆之前创建好的虚拟机: 3. 给虚拟机增加新的硬盘. 注意事项 1) 必须是厚置备的磁盘才可以. 2) 必 ...

  3. LinkedList,HashSet,HashMap

    LinkedList底层源码是采用双向链表实现的 private static class Node<E> { E item;//节点值 Node<E> next;//节点后指 ...

  4. linux c 判断文件存在,遍历文件,随机修改文件内容

    #include<stdio.h> #include<stdlib.h> #include<time.h> #include<assert.h> #in ...

  5. 第216天:Angular---自定义指令(二)

    自定义指令 1.第一个参数是指令的名字,第二个参数任然应该使用一个数组,数组的最后一个元素是一个函数.定义指令的名字,应该使用驼峰命名法 <!DOCTYPE html> <html ...

  6. Merge Intervals - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Merge Intervals - LeetCode 注意点 区间是无序的 每个区间start一定小于end 解法 解法一:首先以start的值从小到大来 ...

  7. 解题:SCOI 2008 配对

    题面 如果没有两个数不能相同这个限制就两个数组排序后贪心即可.现在加上这个限制,注意到每个数组中的数是两两不同的,所以每次一定能在前面或后面一个数中找一个换过来,这样每次考虑相邻三个数转移就可以了,注 ...

  8. [Codeforces Gym] 100162B Circle of Stones

    题意: 桌子上有 n 个石头围成一个环.每个石头都有一种颜色.每种颜色可以由小写英文字母表示.如果每一对相邻的石头都是不同颜色的,则称这 n 个石头构成的环是美丽的.现在,你可以从这 n 个石头中拿走 ...

  9. 团体程序设计天梯赛 L1-049. 天梯赛座位分配(测试数据+不同方法)

    Data: /*33 2 1#11 4 7 10 13 16 19 22 25 2831 33 35 37 39 41 43 45 47 4951 53 55 57 59 61 63 65 67 69 ...

  10. Python中__init__.py文件的作用详解

    转自http://www.jb51.net/article/92863.htm Python中__init__.py文件的作用详解 http://www.jb51.net/article/86580. ...