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》