Ubuntu-ssh server 安装和配置

作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!

运行环境 | Enviroment

  • Ubuntu 10.10

安装ssh server | How to install ssh server

1、在终端命令行中输入如下命令。

1
sudo apt-get install openssh-server

2、启动、停止、重启ssh server。
1) 启动。

1
sudo /etc/init.d/ssh start

系统输出如下信息:

  • Starting OpenBSD Secure Shell server sshd [ OK ]

2)停止。

1
sudo /etc/init.d/ssh stop

系统输出如下信息:

  • Stopping OpenBSD Secure Shell server sshd [ OK ]

3) 重启。

1
sudo /etc/init.d/ssh restart

系统输出如下信息:

  • Restarting OpenBSD Secure Shell server sshd [ OK ]

配置ssh server | How to config ssh server

1、进入/etc/ssh目录。
目录下有两个文件

  • ssh_config - 是ssh client的配置文件。
  • sshd_config - 是ssh server的配置文件。

打开sshd_config文件,其完整内容如下(里面已经加入了各配置项的中文说明)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
# sshd监听的端口号
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
# 设置sshd服务器绑定的IP地址
#ListenAddress ::
#ListenAddress 0.0.0.0
# 仅使用SSH2
Protocol 2
# HostKeys for protocol version 2
# 设置包含计算机私人密匙的文件
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
# 是否让sshd通过创建非特权子进程处理接入请求的方法来进行权限分离。默认值是"yes"。认证成功后,将以该认证用户的身份创建另一个子进程。这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
# 在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。设为 0 表示永不重新生成,默认为 3600(秒)。
KeyRegenerationInterval 3600
# 指定临时服务器密钥的长度。仅用于SSH-1。默认值是 768(位)。最小值是 512 。
ServerKeyBits 768
# Logging
# 指定 sshd(8) 将日志消息通过哪个日志子系统(facility)发送。有效值是:DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7
SyslogFacility AUTH
# 指定 sshd(8) 的日志等级(详细程度)。可用值如下: QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3 DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。比 DEBUG 更详细的日志可能会泄漏用户的敏感信息,因此反对使用。
LogLevel INFO
# Authentication:
# 限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。
LoginGraceTime 120
# 是否允许 root 登录。可用值如下:"yes"(默认) 表示允许。"no"表示禁止。"without-password"表示禁止使用密码认证登录。"forced-commands-only"表示只有在指定了 command 选项的情况下才允许使用公钥认证登录。同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。
PermitRootLogin yes
# 指定是否要求在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查。强烈建议使用默认值"yes"来预防可能出现的低级错误。
StrictModes yes
# 是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。
RSAAuthentication yes
# 是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。
PubkeyAuthentication yes
# 存放该用户可以用来登录的 RSA/DSA 公钥。该指令中可以使用下列根据连接时的实际情况进行展开的符号: %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。默认值是".ssh/authorized_keys"。
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
# 是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件。不过 /etc/hosts.equiv 和 /etc/shosts.equiv 仍将被使用。推荐设为默认值"yes"。
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
# 是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。这是通过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv 进行认证的。出于安全考虑,建议使用默认值"no"。
RhostsRSAAuthentication no
# similar for protocol version 2
# 这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2。推荐使用默认值"no"。推荐使用默认值"no"禁止这种不安全的认证方式。
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
# 是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。默认值是"no"。为了提高安全性,可以设为"yes"。
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
# 允是否允许密码为空的用户远程登录。默认为"no"。
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
# 是否允许质疑-应答(challenge-response)认证。默认值是"no"。
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
# 是否允许使用基于密码的认证。默认为"yes"。
#PasswordAuthentication yes
# Kerberos options
# 是否要求用户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使用Kerberos认证。要使用Kerberos认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。
#KerberosAuthentication no
# 如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个 AFS token 。默认为"no"。
#KerberosGetAFSToken no
# 如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)。默认值为"yes"。
#KerberosOrLocalPasswd yes
# 是否在用户退出登录后自动销毁用户的 ticket 。默认值是"yes"。
#KerberosTicketCleanup yes
# GSSAPI options
# 是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。仅用于SSH-2。
#GSSAPIAuthentication no
# 是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。
#GSSAPICleanupCredentials yes
# 是否允许进行 X11 转发。默认值是"yes",设为"yes"表示允许。如果允许X11转发并且代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令应设为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如果启用了 UseLogin ,那么X11转发将被自动禁止。
X11Forwarding yes
# 指定X11 转发的第一个可用的显示区(display)数字。默认值是 10 。这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。
X11DisplayOffset 10
# 是否在每一次交互式登录时打印 /etc/motd 文件的内容。默认值是"no"。
PrintMotd no
# 是否在每一次交互式登录时打印最后一位用户的登录时间。默认值是"yes"。
PrintLastLog yes
# 指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。可以设为"no"关闭这个特性。
TCPKeepAlive yes
# 是否在交互式会话的登录过程中使用。默认值是"no"。如果开启此指令,那么X11Forwarding 将会被禁止,因为login不知道如何处理 xauth cookies 。需要注意的是,login是禁止用于远程执行命令的。如果指UsePrivilegeSeparation ,那么它将在认证完成后被禁用。
#UseLogin no
# 最大允许保持多少个未认证的连接。默认值是 10 。到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。
#MaxStartups 10:30:60
# 将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。
#Banner /etc/issue.net
# Allow client to pass locale environment variables
# 指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。细节可以参考 ssh_config 中的 SendEnv 配置指令。指令的值是空格分隔的变量名列表(其中可以使用'*'和'?'作为通配符)。也可以使用多个 AcceptEnv 达到同样的目的。需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。默认是不传递任何环境变量。
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
# 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

测试连接ssh server | How to connect to ssh server

1、在终端命令行中输入如下命令。

1
ssh 10.3.18.52

系统输出如下信息:

The authenticity of host ‘10.3.18.52 (10.3.18.52)’ can’t be established.
RSA key fingerprint is 15:df:a7:14:b7:56:85:4b:8c:f2:11:58:3d:c0:49:46.
Are you sure you want to continue connecting (yes/no)? yes # 系统提示RSA key并且要求确认是否继续连接
Warning: Permanently added ‘10.3.18.52’ (RSA) to the list of known hosts.
aofeng@10.3.18.52’s password: # 系统提示输入登录的密码
Linux aofeng-vb 2.6.35-25-generic #44-Ubuntu SMP Fri Jan 21 17:40:48 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/

Last login: Mon Feb 14 09:54:21 2011 from aofeng-vb

注:其中10.3.18.52 改成你自己的实际SSH Server的IP地址。

2、SFTP连接SSH Server。
启动 FileZilla,设置以fzSftp 方式连接10.3.18.52,连接成功。如下图所示:
使用FileZilla连接ssh server