我想在 Ubuntu 上安装 OpenSSH 服务器。该怎么做?
我需要执行以下操作:
设置 OpenSSH 服务器
为用户设置 ssh 公钥和私钥对
禁用密码登录
启用 root 用户
为 root 用户设置 ssh 公钥和私钥对
设置密码
答案1
转到终端并输入:
sudo su
aptitude install openssh-server openssh-client
测试安装
ps -A | grep sshd
如果输出如下:
<some number> ? 00:00:00 sshd
然后 ssh 守护进程正在运行。
再次输入终端;
ss -lnp | grep sshd
如果输出如下:
0 128 :::22 :::* users:(("sshd",16893,4))
0 128 *:22 *:* users:(("sshd",16893,3))
那么这意味着 ssh 守护进程正在监听传入的连接
现在我们编辑配置文件。首先我们备份原始文件。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
现在我们打开配置文件来编辑它
sudo gedit /etc/ssh/sshd_config
弱密码很容易被猜到。最佳做法是使用 SSH 密钥代替密码。
所以我们完全禁用密码验证。
转到行
#PasswordAuthentication yes
并将其替换为
PasswordAuthentication no
启用转发会为已经猜出密码的攻击者提供更多选择。
所以我们禁用它。这给了我们一点安全感
转到行
AllowTcpForwarding yes
X11Forwarding yes
并将其替换为
AllowTcpForwarding no
X11Forwarding no
我们可以明确地允许某些用户登录或拒绝某些用户登录。
为此,我们必须将以下几行放在配置文件的底部。
AllowUsers Fred Wilma
DenyUsers Dino Pebbles
为了使笔记本电脑发挥最佳性能,我们允许两个待处理连接。在第三个和第十个连接之间,系统将开始随机丢弃连接,从 30% 到第十个同时连接时的 100%。这可以通过以下行完成
MaxStartups 2:30:10
为了记录更多错误和其他有用信息,我们修改了以下行
LogLevel INFO
进入日志级别 VERBOSE
为了吓跑新手攻击者,我们可以展示一条横幅,我们将行首的井号标签删除
#Banner /etc/issue.net
实现它
Banner /etc/issue.net
然后我们进入终端并输入:
sudo gedit /etc/issue.net
***************************************************************************
NOTICE TO USERS
This computer system is the private property of its owner, whether
individual, corporate or government. It is for authorized use only.
Users (authorized or unauthorized) have no explicit or implicit
expectation of privacy.
Any or all uses of this system and all files on this system may be
intercepted, monitored, recorded, copied, audited, inspected, and
disclosed to your employer, to authorized site, government, and law
enforcement personnel, as well as authorized officials of government
agencies, both domestic and foreign.
By using this system, the user consents to such interception, monitoring,
recording, copying, auditing, inspection, and disclosure at the
discretion of such personnel or officials. Unauthorized or improper use
of this system may result in civil and criminal penalties and
administrative or disciplinary action, as appropriate. By continuing to
use this system you indicate your awareness of and consent to these terms
and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the
conditions stated in this warning.
****************************************************************************
现在我们保存并关闭配置文件,然后在终端中输入以下内容重新启动 ssh:
systemctl restart ssh
接下来我们设置 SSH 密钥。SSH 密钥有两对,分别为公钥和私钥。公钥存在于服务器中,私钥存在于个人中。如果某人可以将私钥与公钥匹配,则只有他/她才能登录。此外,私钥还可以通过密码保护。此外,当密钥使用 4096 位加密生成时,几乎不可能通过暴力破解它们
第一步——创建 RSA 密钥对:
在终端中输入
ssh-keygen -t rsa -b 4096
为了更加安全,我们使用 64 位加密
第二步——存储密钥和密码:
按照屏幕上的说明,提供存储密钥的所需位置,建议接受默认值,选择密码,输入强密码,并记住它。
屏幕是这样的:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
第三步——复制公钥:
在终端中输入
ssh-copy-id [email protected]
这里的 123.45.56.78 是服务器 IP 地址
如果是本地主机,则
ssh-copy-id user@localmachinename
屏幕是这样的
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
~/.ssh/authorized_keys
以确保我们没有添加您意想不到的额外键。
现在我们的安装已完成。要登录,我们需要在终端中输入:
ssh username@servername
然后当提示输入密码时我们需要提供它。
现在我们要启用 opessh 服务器的 root 登录,首先必须启用 sudo 密码,因为它在 Ubuntu 中默认是禁用的。
为此,我们在终端中输入以下内容,屏幕将如下所示:
sudo passwd
[sudo] password for [username]: [Type your user password and press return]
Type new UNIX password: [Type the root password you want]
Retype new UNIX password: [Retype the root password you chosen before]
passwd: password updated successfully
现在我们必须编辑 /etc/sudoers 文件。
这里我们使用名为 visudo 的编辑器
这是因为 visudo 的唯一目的是编辑 sudoes 文件
在 ubuntu 中,默认情况下配置文件由 nano 编辑器打开
要更改它,请在终端中输入:
sudo update-alternatives --config editor
将出现以下屏幕:
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 10 manual mode
Press <enter> to keep the current choice[*], or type selection number:
输入 3 并按 Enter
然后输入:
sudo visudo
移至以下行:
Defaults env_reset
按 Enter 键
上面创建了新行
类型:
默认 rootpw
使用空格键,而不是 TAB
按 Esc --> :x --> Enter
在终端类型中:
gedit /etc/ssh/sshd_config
移至以下行:
PermitRootLogin password-prohibited
并将其更改为
PermitRootLogin yes
下一步移动到该行:
PasswordAuthentication no
并将其更改为
PasswordAuthentication yes
保存并关闭
然后重启SSH
service ssh restart
现在是时候再次为用户 root 生成 ssh 公钥-私钥对了。
在终端中输入
ssh-keygen -t rsa -b 4096
第二步——存储密钥和密码:
按照屏幕上的说明,提供存储密钥的所需位置,不要接受默认值,因为您这次必须创建新的密钥对,默认值已经创建,选择密码,输入一个强密码,记住它。
屏幕是这样的:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): u-root-id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/u-root-id_rsa.
Your public key has been saved in /home/demo/.ssh/u-root-id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
然后在终端输入:
ssh-copy-id -i u-root-id_rsa.pub root@localmachinename
输出屏幕可能显示:
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password:
现在尝试使用“ssh”登录机器[电子邮件保护]'”,并签入:
~/.ssh/authorized_keys
以确保我们没有添加您意想不到的额外键。
现在我们已经授予root私钥访问权限来登录
测试类型:
ssh root@localmachine
再次在终端输入:
gedit /etc/ssh/sshd_config
移至以下行:
PasswordAuthentication yes
并将其更改为
PasswordAuthentication no
保存并关闭
然后重启SSH
service ssh restart
它会要求输入密码。密码保持不变。输入即可。
现在 root 就可以成功登录了
现在为了提高安全性,我们必须添加防火墙
类型:
apt install ufw
现在开始
enable ufw
获取当前正在运行的进程列表
ufw app list
OpenSSH 将会列在那里。
ALow it through firewall
ufw allow OpenSSH
重启防火墙
systemctl restart ufw
我们的安装已完成