• ssh连接linux服务器不断开- "Write failed: Broken pipe"


     我自己用阿里云的服务器的时候,发现ssh连上以后,一会不用就断掉了,非常不方便,服务端的系统是ubuntu. 查了些东西,原来可以去配置服务端的sshd,或者客户端的ssh,就行了.

    1,配置服务器端sshd,这样所有连该服务器的会话都会产生效果

    找到

    /etc/ssh/sshd_config

    添加一行

    ClientAliveInterval  30

    这样server端每30s就会向client端发送一个keep-alive包, 来保持连接

    还可以加上一行,指定发送keep-alive包的最大次数

    ClientAliveCountMax  60

    如果发送keep-alive包次数达到60, 而客户端还没有反应,则server端的sshd断开连接

    也就是如果什么都不操作,这个配置可以让连接保持30*60s , 30分钟

    2,如果没有服务器权限,可以配置客户端ssh,这样对这个客户端发起的所有会话都会产生效果

    找到

    /etc/ssh/ssh_config

    同样添加上面跟上面了两个差不多的参数

    ServerAliveInterval 
    ServerAliveCountMax 

    这样就是ssh向服务端sshd发送keep-alive包

    3, 也可以指定某个特定的会话

    ssh -o ServerAliveInterval=30  root@192.168.12.192

    ssh带上 -o 参数就可以以配置文件的参数指定这一次会话,  向上面就会一直保持这次会话.

    关于SSH

    SSH是Secure Shell的缩写, 是一个应用层的加密网络协议, 它不只可以用于远程登录, 远程命令执行,还可用于数据传输.

    当然它由ssh Client和ssh Server端组成, 有很多实现, Ubuntu上就默认安装的OpenSSH, Client端叫做ssh, Server端叫做sshd.   OpenSSH只用来做远程登录和命令执行.

    1, 把ssh server运行在特殊端口

    SSH Server运行的默认端口是22,有时候内部服务器,为了防止外部尝试连接,会把sshd运行在一个陌生的端口,只对内部开放.

    使用 -p

    /usr/sbin/sshd -p 2222

    或者在sshd配置文件中指定

    Port  2222

    这时SSH Client去连接也需要指定端口

    ssh root@192.168.12.192  -p 2222

    2,scp使用的是ssh协议

    另外我们经常用的,用作远程加密文件传输的scp (Secure Copy), 就是使用的SSH协议

    scp /home/wangyu/file root@192.168.12.192:/srv/

    也就是实际上,scp会做为ssh client先和ssh server确定传输通道, 当然默认也是端口22.

    如果服务端的ssh server没有运行,那scp是无法连接成功的

    如下是我的测试

    当然如果ssh server运行在特殊指定的端口,那scp也必须去指定这样的端口

    我们把sshd运行在2222端口,那scp要通过 -P 去指定

    scp -P 2222 /home/wangyu/test root@192.168.12.192:/srv/
  • 相关阅读:
    Sqlserver 批量数据更改
    mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录
    SQLServer 与 MySQL
    MySQL 行号(类似SQLServer的row_number())
    c# 字符串排序 (面试题)
    c# 多线程里面创建byte数组发生内存溢出异常求解
    c# 遇到的问题,求解?
    solr-4.10.3.tgz.tgz下载
    VMware虚拟机克隆或复制linux后无法上网的解决方案
    通配符的匹配很全面, 但无法找到元素 'dubbo:application' 的声明。
  • 原文地址:https://www.cnblogs.com/livingintruth/p/3473627.html
Copyright © 2020-2023  润新知