Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1936031
  • 博文数量: 312
  • 博客积分: 10170
  • 博客等级: 上将
  • 技术积分: 3667
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-26 15:27
个人简介

可干百业,无一精通。

文章分类

全部博文(312)

分类: LINUX

2010-02-27 14:37:54

关于SSH你必须知道的5个窍门
1. X11 转发

应用ssh可以开启一个从本地X服务器到远程应用程序的安全连接。首先在/etc/ssh/sshd_config中将X11Forwarding 和 AllowTcpForwarding 两个条目设置成 yes。然后在本地主机启动X服务器。最后运行 ssh 建立一个到远程站点的连接。

localname@localhost:~$ ssh -q -X -l loginname remotehost.domain

Password:

**********

接下来在远程站点运行一个X应用程序的命令。

loginname@remotehost:~$ gimp &

这种方式可以显示远程的X客户端输出,就像是一个通过Unix域套接字的本地连接一样。

2. SSH无密码登录

为了达到这个目的你需要生成自己个人的私钥/公钥对。 ssh-keygen命令用于为你生成密钥对。

在本地机器的用户自己的home目录,输入

[local-host]$ ssh-keygen -t dsa

系统会问你要密文. 密文就是一个字符或者文本的序列,用于控制对计算机系统、程序或数据的访问。在用法上密文和口令差不多,但通常会更长一些,以便增加安全性。一旦密文输入,你会被提示再次输入同样的密文以便确认。

私钥保存在 .ssh/id_dsa,公钥则保存在 .ssh/id_dsa.pub。

现在,将公钥拷贝到远程机器。

[local-host]$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@remotehost

如果你没有安装ssh-copy-id脚本,则使用

[local-host]$ cat ~/.ssh/id_dsa.pub | ssh user@remotehost “cat – >> ~/.ssh/authorized_keys”

现在,在本地机器上, GNOME中可以选择 System > Preferences > Sessions.

选择 Startup Programs 并增加一个新的条目,内容是下面这个命令。

eval `ssh-agent`

ssh-agent是一个程序,它和OpenSSH或者类似的 ssh程序一块使用,可以提供一种存储私钥密文的安全方式。

打开终端并且不带任何参数运行 ssh-add ,它会询问一次你的密文。

ssh-add 将身份添加到认证代理,即 ssh-agent.

[local-host]$ ssh-add

输入密文到 /home/vinod/.ssh/id_dsa: <在此输入密文>

身份添加到: /home/vinod/.ssh/id_dsa (/home/vinod/.ssh/id_dsa)

就这些了,现在你可以登录远程服务器,不会询问任何口令或密文。

NB: 必须不让其他人看到 .ssh/id_dsa的内容, 因为它可以用来通过公钥解密对应的密文。

3. 在远程机器运行命令

你可以用SSH来在服务器之间打开会话,或者你也能够在远程系统上通过非交互方式运行命令。

用法:

$ ssh user@hostname command

一个简单的例子可能是获取文件系统的使用状况:

$ ssh user@192.168.3.4 “df -h”

系统将会提示你输入口令。同样,如果你想携带目的机器上的变量别忘了转义字符。

例如:

user@host> ssh root@host2 “echo \$HOME”

会打印出 /root



user@host> ssh root@host2 “echo $HOME”

则会打印出 /home/user

另一个例子:

user@host> ssh user2@host2 “echo hello world | awk ‘{print \$1}’”

会正确地打印出 “hello”。

4. 使用SSH远程备份

“推”方式:

$ tar cvf – . | gzip -c -1 | ssh user@host cat “>” remotefile.gz

$ dd if=localfile | ssh target_address dd of=remotefile

“拉”方式:

$ ssh target_address cat remotefile > localfile

$ ssh target_address dd if=remotefile | dd of=localfile

5. SSH端口转发

本地端口转发:

如果远程服务器在运行着ssh服务,那么可以通过ssh来对某些服务进行“隧道”。这个特征很可取,比如,加密POP或者SMTP连接,甚至是一些不直接支持加密连接的软件。隧道技术使用端口转发来建立客户与服务器之间的连接。为了达到这个目的客户软件必须可以指定一个非标准端口来进行连接。

因此,使用example.com作为网关来连接到一个Example公司内部网络的地址为192.168.0.12的pop3服务器,你需要这样写:

$ ssh example.com -L 1100:192.168.0.12:110

输入你的口令 (如果需要的话),然后你就可以连接到本地的1100端口来检查你的邮件了。我们使用了一个非特权端口(>1024) 。 你可以使用 OpenSSH 来监听一个特权端口,如果你在本机上是root用户的话。

你还可以转发更多的端口:

$ ssh example.com -L 1100:192.168.0.12:110 -L 1101:192.168.0.12:25

远程端口转发:

远程端口转发刚好相反 – 一个由服务器端发起的隧道,回转到客户机器。比如,在example.com上给予用户以访问你家中机器(192.168.0.2)上服务(SSH 端口,tcp/22)的权限。

$ ssh user@example.com -R 8080:192.168.0.2:80
阅读(2037) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~