BLOG
Enjoy when you can, and endure when you must.
SSH问答集锦

SSH,即Secure Shell,是一种网络协议,用于在远程计算机上执行基于命令行的网络服务和一些其他命令。SSH以其较高的安全性和加密性而闻名,目前主要被网络管理员用在管理远程Web服务器上。

本文展示了10个SSH相关的面试问答。

1. 在默认配置下,SSH使用哪个端口?如何修改该端口?

答:SSH默认使用22端口。可以通过修改其配置文件来改变默认端口号。

我们可以通过在终端中执行下面的一行命令来查看SSH的端口号。

# grep Port /etc/ssh/sshd_config  [On Red Hat based systems]
# grep Port /etc/ssh/ssh_config          [On Debian based systems]

要修改该端口,只需修改其配置文件即可,它位于“/etc/ssh/sshd_config”或“/etc/ssh/ssh_config”。

# nano /etc/ssh/sshd_config [On Red Hat based systems]
# nano /etc/ssh/ssh_config  [On Debian based systems]

找到以下行:

Port 22

将“22”改成任意一个空闲的端口号如“1080”,然后保存配置并重启SSH服务即可使修改生效。

2. 从安全角度考虑,你需要在Linux上禁止root账号通过SSH服务登录。你如何做到?

答:该行为可以通过配置文件实现。将配置参数“PermitRootLogin”的值设为“no”即可达到该目的。

要禁止root账号通过SSH登录,打开配置“/etc/ssh/sshd_config”或“/etc/ssh/ssh_config”。

# nano /etc/ssh/sshd_config   [On Red Hat based systems]
# nano Port /etc/ssh/ssh_config   [On Debian based systems]

将参数“PermitRootLogin”的值该为“no”,保存并重启SSH服务即可。

3. 使用SSH还是Telnet?为什么?

答:SSH和Telnet均是网络协议,它们均用于通过互联网与远程计算机进行连接和通信。默认情况下,SSH使用22端口而Telnet使用23端口。Telnet通过明文和非加密的格式与服务器通信,这使得每个人都能轻松捕获和理解其中的内容。相反,SSH是以加密格式来传送数据。SSH无疑是更加安全的,因此应当使用SSH。

4. 能否实现在SSH登录中不使用密码?如果可以如何做到?

答:当然是可以的。我们需要使用ssh-keygen来创建公钥和私钥。

通过如下命令创建ssh-keygen:

$ ssh-keygen

将公钥拷贝至远程服务器:

$ ssh-copy-id -i /home/USER/.ssh/id_rsa.pub REMOTE-SERVER

注:请自行替换USER和REMOTE-SERVER为你的用户名和远程服务器地址。
这样,下次通过SSH登录该服务器时,将会使用keygen进行认证而无需手动输入密码。

5. 是否可以指定哪些用户和组可以访问SSH服务?

答:可以!

这里,我们需要再次修改SSH的配置文件。打开配置文件并以如下方式添加用户名和组,然后重启服务即可。

AllowUsers Tecmint Tecmint1 Tecmint2
AllowGroups group_1 group_2 group_3

6. 如何添加用户登录时的欢迎/警告信息?

答:修改文件“/etc/issue”中的内容即可。

# nano /etc/issue

然后自定义其中的内容。如下所示,一旦用户登录服务器时,即可看到该定制的信息。

7. SSH拥有两种协议?试着解释这句话。

答:SSH拥有两种协议 —— 协议1和协议2。协议1相比协议2更老,而安全性也相对较低,应当在配置文件中禁止。

再次打开配置文件并做如下修改:

# protocol 2,1
# to
Protocol 2

保存配置并重启服务以使修改生效。

8. 能否追踪到SSH上未经授权的登录尝试,并获取到其时间和对应的IP?

答:可以。通过查看“/var/log/secure”日志文件并通过如下命令筛选结果即可得到想要的信息。

# cat /var/log/secure | grep “Failed password for”

9. 能否通过SSH来拷贝文件?如何做到?

答:可以!使用SCP(Secure CopY)命令即可做到,该命令使用SSH来考虑文件,因此非常安全。

下面是一个SCP命令的伪示例:

$ scp text_file_to_be_copied Your_username@Remote_Host_server:/Path/To/Remote/Directory

10. 能否通过一个本地文件向SSH传送输入?如果可以如何做到?

答:可以!像下面这样做即可:

# ssh username@servername < local_file.txt

更多请参考原文:《10 Useful SSH (Secure Shell) Interview Questions and Answers

COMMENTS
LEAVE COMMNT