10个 ssh 简单命令选项

一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方。要亲自一台一台的去访问来管理它们显然不是最好的方法,通过远程控制的方法应该是最有效的。远程访问最通用的一款应用程序就是SSH(什么?你还用telnet?....$%@%&W@$##)。

SSH 是什么

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

安装 SSH

的 Linux 系统默认已经安装了 SSH。如果碰巧你的机器没装(译注:我能吐槽么?没有不装ssh的Linux服务器吧,不过,大家要记得升级你的ssh服务器),我们可以手工来安装一下。最简单的方式就是使用 Linux 包管理器。

基于 Debian / Ubuntu 的系统 :

安装 ssh-client


  1. $ sudo apt-get install openssh-client

安装 ssh-server


  1. $ sudo apt-get install openssh-server

基于 RedHat / CentOS 的系统 :


  1. # yum install openssh-server openssh-clients

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

An ssh client

使用 SSH

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

1. 无选项参数运行 SSH

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


  1. $ ssh 192.168.0.103

SSH connecti confirmation

第一次连接目标主机时,ssh 会让你确认目标主机的真实性。如果你回答的是 NO,SSH 将不会继续连接,只有回答 Yes 才会继续(译注:会加入RSA key的指纹作为记录,如果下次连接发现指纹变化,会提示你)。

Connecting to SSH

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

2. 指定登陆用户

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

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


  1. $ ssh -l leni 192.168.0.103

Ssh using -l option

我们也可以这样输入:


  1. $ ssh leni@192.168.0.0103

Another way to supply username

3. 指定端口

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

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


  1. $ ssh 192.168.0.103 -p 1234

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


  1. Port 22

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

4.对所有数据请求压缩

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


  1. $ ssh -C 192.168.0.103

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

5. 指定一个加密算法

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

SSH cipher configuration example

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


  1. Cipher blowfish

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

6. 打开调试模式

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


  1. $ ssh -v 192.168.0.103

debug ssh connection

7. 绑定源地址

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

More than 1 IP Address

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


  1. $ ssh -b 192.168.0.200 -l leni 192.168.0.103

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

Bind address using SSH

8. 使用其他配置文件

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

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


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

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


  1. $ ssh -F /home/pungki/my_ssh_config 192.168.0.101

Specify your ssh_config

9. 使用 SSH X11 Forwarding

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

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

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


  1. $ ssh -X leni@192.168.0.101

一旦登陆,可以输入:


  1. $ echo $DISPLAY

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


  1. localhost:10:0

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


  1. $ xclock

Use X11 Formading

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

xclock

10. 可信任的 X11 转发

如果你敢肯定你的网络是安全的,那么你可以使用可信任的 X11 转发机制。这意味着远程的 X11 客户端可以完全的访问源 X11 显示内容。要使用此功能,可以使用 -Y 选项。


  1. $ ssh -Y leni@192.168.0.101

SSH _Y for trusted connection

结论

我们相信 SSH 的使用范围非常之广。SSH 给用户提供了网络连接的极大安全性和灵活性。通常我们都会输入man ssh 和 man ssh_config 来显示它的用户手册及查看更多的细节。

(译注补充:建议使用ssh的协议版本2,因此请修改 ssh_config 文件的 Protocol 字段为:2,而将对协议1的支持取消。)

原文发布时间为:2014-04-27

本文来自合作伙伴“Linux中国”

时间: 2024-07-30 08:50:52

10个 ssh 简单命令选项的相关文章

给新手的 10 个有用 Linux 命令行技巧

我记得我第一次使用 Linux 的时候,我还习惯于 Windows 的图形界面,我真的很讨厌 Linux 终端.那时候我觉得命令难以记忆,不能正确使用它们.随着时间推移,我意识到了 Linux 终端的优美.灵活和可用性,说实话,我没有一天不使用它.今天,我很高兴和刚开始接触 Linux 的人一起来分享一些有用的技巧和提示,希望能帮助他们更好的向 Linux 过渡,并帮助他们学到一些新的东西(希望如此). 5 个有趣的 Linux 命令行技巧 这篇文章希望向你展示一些不需要很高的技术就可以像一个高

Oracle RMAN备份(二)Backup 命令选项

五. Backup 命令选项 5.1 压缩 默认情况下,RMAN 执行NULL 数据块压缩. 5.1.1 NULL 控制压缩 使用这种形式的压缩时,Oracle不会备份未使用的数据块. 执行NULL 数据块压缩的情形有一下两种情况: (1)从未使用过的数据块不被压缩 (2)在给定的特定标准下,使用过一次的数据块也不被备份. 在第一种情况下,将不会备份其中一直没有数据的所有数据块,在第二种情况下,如果数据库和关联的数据库满足某种标准,空块将不被备份,即使 它在某个时刻包含数据. 下面是允许RMAN

全面掌握Node命令选项

本文讲的是全面掌握Node命令选项, 译者按: 作为Node.js开发者,有必要全面了解一下Node命令的所有选项,这样在关键时刻才能得心应手. 原文: Mastering the Node.js CLI & Command Line Options 译者: Fundebug 为了保证可读性,本文采用意译而非直译. Node命令有很多选项,可以用于调试代码.这篇博客全面介绍了Node命令,可以提高大家的工作效率. 查看Node命令选项 使用man命令可以获取Node命令的所有选项: $ man

Oracle 和 mysql 的一些简单命令对比参照

mysql|oracle Oracle 和 mysql 的一些简单命令对比参照 Oraclemysql对比版本Personal Oracle7 Release 7.3.4.0.0mysql 3.22.34-shareware-debug启动画面(点击放大)默认安装目录C:\ORAWIN95C:\MYSQL各种实用程序所在目录C:\ORAWIN95\BINC:\MYSQL\BIN控制台工具SVRMGR.EXESVRMGR23.EXEmysqladmin.exe数据库启动程序0start73.exe

Oracle和MySQL的一些简单命令对比

Oracle和MySQL的一些简单命令对比 SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; SQL> select to_char(sysdate,'hh24-mi-ss') from dual; mysql> select date_format(now(),'%Y-%m-%d'); mysql> select time_format(now(),'%H-%i-%S'); 日期函数 增加一个月: SQL> selec

Win7系统开始菜单没有“运行”命令选项怎么找回?

Win7系统开始菜单没有"运行"命令选项怎么找回?             具体方法如下: 1.首先检查自定义「开始」菜单中是否勾选"运行命令"选项,如果已经勾选的话,那么可以在组策略编辑器中启用将运行命令添加到开始菜单选项; 2.首先在win7操作系统中使用组合键"Win+R"打开运行窗口,然后在运行窗口中输入"gpedit.msc"按回车键或确定打开组策略编辑器管理窗口; 3.打开组策略设置窗口后,在左侧菜单列表中依次展开

我的一个SSH简单整合,启动tomcat时报错,如error文档内容所示,请教指点

问题描述 我的一个SSH简单整合,启动tomcat时报错,如:error文档 内容所示,请教指点,项目源代码及项目结构图都在压缩包中,随时等候佳音,谢谢了-- 解决方案 你的UesrBean.hbm.xml的路径写错了不是<class name="com.bean.UserBean" table="users">而是<class name="com.bean.user.UserBean" table="users&qu

10种方法简单处理基于DNS的DDoS攻击

由于UDP是一种无连接协议,且可用脚本轻松生成大量UDP数据包而常被用于海量带宽的DDoS攻击,也就是UDP泛洪攻击. DNS主要采用的是UDP协议,某些情况下采用TCP协议, 而UDP/DNS协议也常被DDoS工具利用. DNS协议是一个十分重要的网络协议,所以这个协议的可用性就异常重要.为了让DNS拒绝服务,恶意攻击者向允许递归的开放DNS解析器发送大量伪造的查询请求.目前互联网中存在着上百万开放的DNS解析器,包括很多的家庭网关. 开放的DNS解析器会认为这些伪造的查询请求是真实有效的,并

linux中常用SSH实用命令

常用SSH实用命令 1.统计当前目录文件数 find . -type f -print |wc -l 2.打包压缩 压缩tar -cjvf xxxx.tar.bz2 xxxx(文件夹) 解压tar xvjf xxxx.tar.bz2 3.文件夹 cd[目录名]转换路径 cd .. 返回上级目录 ls显示当前目录下所有文件 -pwd 显示当前路径 -mkdir xxxx 新建文件夹 4.查看文件夹大小 du -s xxxx 按KB du -sh xxxx 按M 5.删除文件 -rm [file]删