需要安装的软件:openssl、openssh,这两个软件在core库中都有,直接用pacman安装即可。

安装完成之后开始配置SSH。编辑/etc/ssh/sshd_config文件,去掉一些注释修改一些值就行了,我的配置文件在第二页。

挑sshd_config文件中几个常用的选项稍微介绍一下,详细的说明可以man sshd_config来查看。

Port 一看就是开放的端口,可以更改端口,这样可以防止一些扫描软件的扫描,能略微增加一些安全性,但是连接的时候请指出连接端口,否则不能连上。
ListenAddress 用来指定监听IP,如果你的电脑上有多块网卡,可以用这个来指定一个网卡对应的IP。
Protocol 是指定SSH用的协议。SSH有两个协议,其中1被认为不安全,通常使用2。如果两个协议都要用,请在1和2之间用逗号分隔。
HostKey 系列用于指定主机私钥放置地址,可以看到有分别指定协议1和2。
KeyRegenerationInterval 是协议1中设置每隔一段时间重新建立一次公钥,以防止公钥被偷造成损失,实用协议2可以忽略这个参数。
ServerKeyBits 用于设置密钥长度,保持默认值。
SyslogFacility 是用于指定SSH的日志记录在什么daemon name下,默认的AUTH是指/var/log/secure。
LoginGaceTime 设置用户在连接上SSH时出现输入密码登录的画面的停留时间,时间单位为秒。
PermitRootLogin 指定是否允许root登录,SSH出于安全考虑默认是不允许root登录的,如果你非要允许就写yes吧,不过请设下更多安全策略来保护你的系统。
StrictModes 设置当用户的host key改变之后服务端就拒绝联机,可以抵挡部分木马。
MaxAuthTries 设置登录时密码尝试的最大次数,可以抵御居心不良者不停尝试密码。
MaxSessions 设置允许的最多同时连接数。
RSAAuthentication 选择是否使用纯RSA认证,这个设置只针对协议1。
PubkeyAuthentication 是否允许公钥,只针对协议2,这里要允许。
AuthorizedKeysFile 此处设置不需要密码登录的帐号,即这个帐号存放文件所在的文件名,很重要,文件名请牢记。
RhostsRSAAuthentication 专为协议1设置,实用rhosts文件在/etc/hosts.equiv配合RSA算法来认证,建议不使用。
HostbasedAuthentication 与上一个类似,不过专为协议2设置。
IgnoreUserKnownHosts 设置是否忽略默认目录内的~/.ssh/known_hosts文件中记录的主机内容,这里请不要忽略,设置为no。
IgnoreRhosts 忽略~/.ssh/.rhosts来认证,要取消。
PasswordAuthentication 密码验证,这当然是需要的,设置为yes。
PermitEmptyPasswords 是否允许以空密码登录,请设置为no来拒绝危险的空密码登录。
ChallengeResponseAuthentication 是否允许任何的密码认证,即任何login.conf规定的认证方式均可适用,不过还是通过PAM模块来管理认证比较合适一点,可以设置为no。
UsePAM 设置使用PAM来管理认证,建议设置为yes。
PrintMotd 设置登录后是否显示一些信息,即打印出/etc/motd文件的内容,考虑到安全可以设置为no。
PrintLastLog 设置登录时打印最后一次登录记录。
TCPKeepAlive 设置了yes的话服务端会传送KeepAlive信息给客户端以确保两者联机正常,有一端死掉的话SSH可以立刻知道并做出反应,避免僵尸程序。
UseLogin SSH下不接受login这个程序的登录。
UsePrivilegeSeparation 设置用户的权限,可以设为yes。
Compression 设置是否可以是用压缩命令,可以设置为yes。
PidFile 设置SSHD的pid文件放置位置。
MaxStartups 设置同时允许几个尚未登录的联机画面,就是指连接上之后还没输入密码登录时的状态,已经登录的不在这个限制中。

下面是Kerberos相关的设置,如果有Kerberos主机才需要设置,没有就不用了
KerberosAuthentication
KerberosOrLocalPasswd
KerberosTicketCleanup
KerberosGetAFSToken

下面两条是有关GSS的设置,不需要做什么
GSSAPIAuthentication
GSSAPICleanupCredentials

下面是关于X-window的设置,视个人情况来定
X11Forwarding
X11DisplayOffset
X11UseLocalhost

Subsystem    sftp    /usr/lib/ssh/sftp-server 这个是关于SFTP服务的设置,建议不要做更改。

设置完成之后就可以从远程登录了。

出于安全考虑,可以通过修改hosts.allow和hosts.deny文件来设置允许登录的IP及不允许登录的IP。

简单介绍一下通过hosts设置安全策略:

/etc/hosts.allow 加入下面格式的内容:

sshd:192.168.1.101, 192.168.1.102: allow

/etc/hosts.deny 加入下面内容:

sshd : ALL : spawn (/bin/echo Security notice from host `/bin.hostname`;\
/bin/echo; /usr/sbin/safe_finger @%h ) | \
/bin/mail -s "%d -%h security" root@localhost & \
: twist (/bin/echo -e " WARNING connection not allowed.". )

当然,要执行这个操作还需要安装twisted包,这是一个异步网络框架的什么东西。

这样就允许了allow中的IP地址登录SSH,其他IP地址登录时将被拒绝。

如果你需要更安全的SSH,可以设置iptables搭建一个防火墙来保护你的主机。

一切配置好之后用命令启动SSH

/etc/rc.d/sshd start

如果需要开机自动启动,请将sshd加入到rc.conf的daemon中。

#    $OpenBSD: sshd_config,v 1.81 2009/10/08 14:03:41 markus Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.

Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# The default requires explicit activation of protocol 1
Protocol 2

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
ServerKeyBits 1024

# Logging
# obsoletes QuietMode and FascistLogging
SyslogFacility AUTH
#LogLevel INFO

# Authentication:

LoginGraceTime 1m
PermitRootLogin no
StrictModes yes
MaxAuthTries 5
#MaxSessions 10

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile    .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no

# Change to no to disable s/key passwords
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

# Set this to 'yes' to enable PAM authentication, account processing, 
# and session processing. If this is enabled, PAM authentication will 
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
UseLogin no
UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
MaxStartups 10
#PermitTunnel no
#ChrootDirectory none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem    sftp    /usr/lib/ssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#    X11Forwarding no
#    AllowTcpForwarding no
#    ForceCommand cvs server