当前位置: 首页 > news >正文

9个 SSH常用命令选项(转载)

9个 SSH常用命令选项

SSH 是什么

SSH(全 称 Secure Shell)是一种加密的网络协议。使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息。要使用 SSH,目标机器应该安装 SSH 服务端应用程序,因为 SSH 是基于客户-服务模式的。 当你想安全的远程连接到主机,可中间的网络(比如因特网)并不安全,通常这种情况下就会使用 SSH。

安装 SSH

如果碰巧你的机器没装,我们可以手工来安装一下。最简单的方式就是使用 Linux 包管理器。

基于 Debian / Ubuntu 的系统 :

安装 ssh-client

$ sudo apt-get install openssh-client

安装 ssh-server

$ sudo apt-get install openssh-server

基于 RedHat / CentOS 的系统 :

# yum install openssh-server openssh-clients

SSH 一旦安装上,我们就可以在终端下输入 ssh 来检查下安装的是否正常。

使用 SSH

提供了许多可使用的选项。这篇文章会介绍一些我们在日常操作中经常使用的选项。

1. 无选项参数运行 SSH

通常使用 SSH 的方式就是不加任何选项参数,仅仅输入 "ssh"。下面是示例:

$ ssh 192.168.0.103

第一次连接目标主机时,ssh 会让你确认目标主机的真实性。如果你回答的是 NO,SSH 将不会继续连接,只有回答 Yes才会继续。

下一次再登陆此主机时,SSH 就不会提示确认消息了。对此主机的真实验证信息已经默认保存在每个用户的 /home/user/.ssh 文件里。

2. 指定登陆用户

默认的,ssh 会尝试用当前用户作为用户名来连接。在上面的示例命令中,ssh 会尝试用用户名叫 pungki 的用户身份来登入服务器,这是因为用户 pungki 正在客户机上使用 ssh 客户端软件。

假如目标主机上没有叫 pungki 的用户呢?这时你就必须提供一个目标主机上存在的用户名。从一开始就要指定用户名的,可以使用 -l 选项参数。

$ ssh -l leni 192.168.0.103

我们也可以这样输入:

$ ssh leni@192.168.0.0103

3. 指定端口

SSH 默认使用的端口号是 22。大多现代的 Linux 系统 22 端口都是开放的。如果你运行 ssh 程序而没有指定端口号,它直接就是通过 22 端口发送请求的。

一些系统管理员会改变 SSH 的默认端口号。让我们试试,现在端口号是 1234.要连上那主机,就要使用 **-p* 选项,后面在加上 SSH 端口号。

$ ssh 192.168.0.103 -p 1234

要改变端口号,我们需要修改 /etc/ssh/ssh_config 文件,找到此行:

Port 22

把它换成其他的端口号,比如上面示例的 1234 端口,然后重启 SSH 服务。

4.对所有数据请求压缩

有了这个选项,所有通过 SSH 发送或接收的数据将会被压缩,并且任然是加密的。要使用 SSH 的压缩功能,使用 -C 选项。

$ ssh -C 192.168.0.103

如果你的连网速度很慢的话,比如用 modem 上网,这个选项非常有用。但如果你使用的是像 LAN 或其它更高级网络的话,压缩反而会降低你的传输速度。可以使用 -o 选项加上压缩级别参数来控制压缩的级别,但这个选项仅仅只在 SSH-1 下起作用。

5. 指定一个加密算法

SSH 提供了一些可用的加密算法。可以在 */etc/ssh/ssh_config or ~/.ssh/config * 文件中看到(如果存在的话)。

让我们试试比如你想使用 blowfish 算法来加密你的 SSH 会话,那么你只要把这一行加入你的/etc/ssh/ssh_config or ~/.ssh/config 文件就可以:

Cipher blowfish

默认的,SSH 会使用 3des 算法。

6. 打开调试模式

因为某些原因,我们想要追踪调试我们建立的 SSH 连接情况。SSH 提供的 -v 选项参数正是为此而设的。

$ ssh -v 192.168.0.103

7. 绑定源地址

如果你的客户端有多于两个以上的 IP 地址,你就不可能分得清楚在使用哪一个 IP 连接到 SSH 服务器。

为了解决这种情况,我们可以使用 -b 选项来指定一个IP 地址。这个 IP 将会被使用做建立连接的源地址。

$ ssh -b 192.168.0.200 -l leni 192.168.0.103

服务端,我们可以使用 netstat 命令来检查到服务的连接是否建立。可以看到 IP 为 192.168.0.200 的连接已经建立。

8. 使用其他配置文件

默认情况下,ssh 会使用位于 /etc/ssh/ssh_config 的配置文件。这个配置文件作用于系统的所有用户。但你想要为特定的用户指定特殊的设置的话,可以把配置放入 ~/.ssh/config 文件中。如果此文件不存在,可以手工创建一个。

下面是一个通用 ssh_config 文件配置的例子。这配置文件位于 /home/pungki 目录下。

Host 192.168.0.*
ForwardX11 yes
PasswordAuthentication yes
ConnectTimeout 10
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
Protocol 2
HashKnownHosts yes

要使用指定的配置文件,可以使用 -F 选项。

$ ssh -F /home/pungki/my_ssh_config 192.168.0.101

9. 使用 SSH X11 Forwarding

某些时候,你可能想把服务端的 X11 应用程序显示到客户端计算机上,SSH 提供了 -X 选项。但要启用这功能,我们需要做些准备,下面是它的设置:

在服务器端,你需要使 /etc/ssh/ssh_config 文件中的行设置成 ForwardX11 yes 或者 X11Forwad yes,以启用 X11 Forwarding,重启 SSH 服务程序。

然后在客户端,输入 ssh -X user@host:

$ ssh -X leni@192.168.0.101

一旦登陆,可以输入:

$ echo $DISPLAY

来检查,你应该可以看到向如下所示的

localhost:10:0

随后就可以运行应用了,仅仅只能输入应用程序的命令。让我们试试,比如想运行 xclock 程序,输入:

$ xclock

它就运行起来了,xclock 确实是运行在远端系统的,但它在你的本地系统里显示了。

 

可以从以下几个方面检查

1 vi /etc/ssh/sshd_config:
然后将这两项的注释号去掉
Port 22
Protocol 2

2 检查sshd服务
sudo service ssh status.
3 检查名字是否一致
/etc/hostname, and /etc/hosts.
4 检查防火墙.
sudo service ufw status
5 查看tcp端口22
zhaoxiaowei@beigang:~$ netstat -nat | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 52 IPADDR.197 :22 221.123.129.155:54465 ESTABLISHED
tcp 0 0 IPADDR.197 :22 221.123.129.155:1259 ESTABLISHED
tcp 0 0 IPADDR.197:22 192.126.120.8:54340 ESTABLISHED
tcp 0 0 IPADDR .61.197:22 221.123.129.155:54109 ESTABLISHED
tcp 0 0 IPADDR .61.197:22 221.123.129.155:53899 ESTABLISHED
tcp6 0 0 :::22 :::*

LISTEN

转载于:https://www.cnblogs.com/linux-home/p/5362230.html

相关文章:

  • 二叉树的操作
  • jquery 的队列queue
  • CentOS下载
  • 开始学习第一天
  • 电梯演讲
  • Linux kernel Makefile for ctags
  • SVN之 trunk, branches and tags意义
  • Android Java执行Shell命令
  • 简介SQL数据库
  • KeyMob移动广告聚合平台服务_广告聚合平台_工具
  • IDEA的快捷键
  • 仿新浪微盾客户端项目简介三
  • IIS提示“异常详细信息: System.Runtime.InteropServices.ExternalException: 无法执行程序”...
  • linux 公网主机被***了
  • 【Mysql 学习】 MERGE表方面的问题(二)
  • 【Leetcode】101. 对称二叉树
  • canvas 绘制双线技巧
  • docker容器内的网络抓包
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JavaScript的使用你知道几种?(上)
  • Laravel核心解读--Facades
  • Lsb图片隐写
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Redis的resp协议
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 第十八天-企业应用架构模式-基本模式
  • 对JS继承的一点思考
  • 对超线程几个不同角度的解释
  • 记一次用 NodeJs 实现模拟登录的思路
  • 简单数学运算程序(不定期更新)
  • 三分钟教你同步 Visual Studio Code 设置
  • 深度学习在携程攻略社区的应用
  • 问题之ssh中Host key verification failed的解决
  • 小程序开发中的那些坑
  • 用jquery写贪吃蛇
  • 原生Ajax
  • 再谈express与koa的对比
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 怎么将电脑中的声音录制成WAV格式
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 阿里云重庆大学大数据训练营落地分享
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #include到底该写在哪
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (27)4.8 习题课
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (第一天)包装对象、作用域、创建对象
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (顺序)容器的好伴侣 --- 容器适配器
  • (未解决)macOS matplotlib 中文是方框