Secure Shell (简体中文)

From ArchWiki
Revision as of 06:13, 18 December 2011 by Skydiver (Talk | contribs) (X11 Forwarding: update from english)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Secure Shell(SSH)是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。加密技术保证了数据的保密性和完整性。如果有必要的话,SSH采用公匙加密技术来验证远程主机,以及必要时允许远程主机验证用户。

SSH 通常用于远程访问和执行命令,但是它也支持隧道,转发任意 TCP 端口以及 X11 连接;它还能够用 SFTP 或 SCP 协议来传递文件。

一个 SSH 服务器,默认地,在 TCP 端口 22 进行监听。一个 SSH 客户端程序通常被用来建立一个接受远程连接的 sshd 守护进程。这两者都以专利的,自由软件的以及开源版本的形式和不同的复杂性和完整性,被广泛地应用在现代的操作系统中,包括 Mac OS X,GNU/Linux,Solaris 和 OpenVMS 等。

OpenSSH

OpenSSH (OpenBSD Secure Shell) 是一套用ssh协议,通过电脑网络,提供加密通讯会话的电脑程序。它相对于SSH Communications Security公司拥有专利的Secure Shell软件套装,被创建为开源。OpenSSH是由Theo de Raadt领导的OpenBSD项目的一部分。

人们常把OpenSSH与相似的OpenSSL搞混,但是,这两个项目是由不同的团队开发出来的,有不同的用途,相似的名字只是由于相似的目标。

安装OpenSSH

pacman -S openssh

配置SSH

客户端

SSH客户端的配置文件是Template:Filename

以下是一个范例::

Template:File

推荐将“Protocol”行改为:

Protocol 2

这表示只有协议2将被用到,因为协议1 被认为不太安全。

守护进程

SSH客户端的配置文件是Template:Filename

以下是一个范例::

Template:File

只允许某些用户访问的话,加入这一行:

AllowUsers    user1 user2

要禁止通过SSH进行root用户登录,加入以下行:

PermitRootLogin no

你也可以取消BANNER选项的注释,然后编辑Template:Filename加入友好的欢迎信息内容。

Tip: 你可能想要把默认的端口从22改成其它更高的端口(参考 security through obscurity).

尽管ssh的运行端口可以被像nmap这样的端口扫描器侦测到,但改变它可以减少由于自动验证的尝试造成登录次数。

Tip: 完全取消密码登录方式也可以增强安全性,因为每个访问服务器的用户都需要创建ssh密钥。(参考 Using SSH Keys).

Template:File

允许其它主机进入

Template:Box Note

为了让其他人通过ssh登录到你的机器上,你必须要设置“/etc/hosts.allow”这个文件,加入类似下面的文字:

# 让每个人都能连接到你
sshd: ALL

# 或者限制只能特定的ip能够
sshd: 192.168.0.1

# 或者限制ip段
sshd: 10.0.0.0/255.255.255.0

# 或者限制为IP匹配
sshd: 192.168.1.

现在检查你的“/etc/hosts.deny”文件,找到并确保有类似下面一行的内容:

ALL: ALL
你能SSH出去别人也应该能够SSH进来:)。

开始使用新的配置之前,要先重启守护进程(以root身份):

# rc.d restart sshd

管理SSHD守护进程

只要把sshd加到/etc/rc.conf中的"DAEMONS" section部分:

DAEMONS=(... ... sshd ... ...)

开始/重启/停止这个daemon:

# rc.d {start|stop|restart} sshd

连接到服务器

运行下面的命令:

$ ssh -p port user@server-address

小细节和小戏法

加密Socks通道

对于连接到各种不安全的无线网络上的笔记本电脑用户来说,这个是特别有用的!唯一所需要的就是一个一定程度上处于安全的地点的SSH服务器,比如在家里或办公室。用动态的DNS服务DynDNS也可能是很有用的,这样你就不必记住你的IP了。

第一步:开始连接

你只要在你喜欢的终端中执行这一个命令就能开始你的连接:

$ ssh -ND 4711 user@host

这里的“user”是你在“host”这台SSH服务器上运行的用户名。它会让你输入密码,然后你就能连上了。“N”表示不采用交互提示,而“D”表示指定监听的本地端口(你可以使用任何你喜欢的数字)

一个办法可以让这个过程更简单,那就是在~/.bashrc中加入这样一行:

alias sshtunnel="ssh -ND 4711 -v user@host"

加入冗长的“-v”标志更好,因为这样你可以验证是真的是从那个端口连接的。现在你只要执行命令“sshtunnel”就可以。 :)

第二步:配置你的浏览器(或其它程序)

如果你不配置你的web浏览器以便使用新创建的socks通道的话,上面的一步完全没用!

  • 对于Firefox: Edit -> Preferences -> Advanced -> Network -> Connection -> Setting:
检查"Manual proxy configuration" radio button?, 并且在"SOCKS host" 文本段输入"localhost" , 然后在接下来的一个文本框中输入你的端口数(上面我们用的是4711)。
确定你选择使用SOCKS4。这个程序对不会对SOCKS5起作用.
享受你的安全通道吧!

X11 Forwarding

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Secure Shell (简体中文)#)

为了通过SSH运行图形程序你必须使用X11 Forwarding。一个选项就是需要设置服务器和客户端的配置文件。

在服务器上安装xorg-xauth:

# pacman -S xorg-xauth

Also:

Enable the ForwardX11Trusted can help when gui drawing badly.

To use the forwarding, log on to your server through ssh:

$ ssh -X -p port user@server-address

If you receive errors trying to run graphical applications try trusted forwarding instead:

$ ssh -Y -p port user@server-address

You can now start any X program on the remote server, the output will be forwarded to your local session:

$ xclock

If you get "Cannot open display" errors try the following command as the non root user:

$ xhost +

the above command will allow anybody to forward X11 applications. To restrict forwarding to a particular host type:

$ xhost +hostname

where hostname is the name of the particular host you want to forward to. Type "man xhost" for more details.

Be careful with some applications as they check for a running instance on the local machine. Firefox is an example. Either close running Firefox or use the following start parameter to start a remote instance on the local machine

$ firefox -no-remote

用SSHFS挂载远程文件系统

安装sshfs

# pacman -S sshfs

将你想要允许挂载SSH文件夹的用户添加到fuse组里

# gpasswd -a USER fuse

加载fuse模块(比如说在/etc/rc.conf中)

And then然后,在登录后,你就可以试着挂用sshfs载远程文件夹了:

# mkdir ~/remote_folder
# sshfs USER@remote_server:/tmp ~/remote_folder

上面的命令将把远程服务器上的/tmp文件夹挂载到本地的~/remote_folder目录下。复制任何文件到这个目录将使文件通过SCP通过网络传输。 Same concerns direct file editing, creating or removing.

当我们完成在远程文件夹下的工作,我们可以这样来卸载它:

# fusermount -u ~/remote_folder

如果我们需要经常在这个文件夹下,让它通过/etc/fstab挂载是一个明智的选择。这个办法可以让它在启动的时候挂载或者通过手动挂载(如果是noauto选项的话),而不需要每次都去挂载它。下面是一个简单的样本:

sshfs#USER@remote_server:/tmp /full/path/to/directory fuse    defaults,auto    0 0

链接和参考