一、概述

1、SSH是传输层和应用层上的安全协议,它只能通过加密连接双方会话的方式来保证连接的安全性。

2、SSH服务的守护进程为sshd,默认监听在22端口上,ssh服务端配置文件为/etc/ssh/sshd_config。

3、所有ssh客户端工具,包括ssh命令,scp,sftp,ssh-copy-id等命令都是借助于ssh连接来完成任务的。

4、ssh客户端命令(ssh、scp、sftp等)读取两个配置文件:全局配置文件/etc/ssh/ssh_config和用户配置文件~/.ssh/config。

二、配置文件分布

服务端:
• /etc/ssh/sshd_config  :ssh服务程序sshd的配置文件。
• /etc/ssh/ssh_host_*   :服务程序sshd启动时生成的服务端公钥和私钥文件。如ssh_host_rsa_key和ssh_host_rsa_key.pub。
•                                   :其中.pub文件是主机验证时的host key,将写入到客户端的~/.ssh/known_hosts文件中。
•                                   :其中私钥文件严格要求权限为600,若不是则sshd服务可能会拒绝启动。
• ~/.ssh/authorized_keys:保存的是基于公钥认证机制时来自于客户端的公钥。在基于公钥认证机制认证时,服务端将读取该文件。
客户端:
• /etc/ssh/ssh_config    :客户端的全局配置文件。
• ~/.ssh/config              :客户端的用户配置文件,生效优先级高于全局配置文件。一般该文件默认不存在。该文件对权限有严
•                                   :格要求只对所有者有读/写权限,对其他人完全拒绝写权限。
• ~/.ssh/known_hosts   :保存主机验证时服务端主机host key的文件。文件内容来源于服务端的ssh_host_rsa_key.pub文件。
• /etc/ssh/known_hosts:全局host key保存文件。作用等同于~/.ssh/known_hosts。
• ~/.ssh/id_rsa              :客户端生成的私钥。由ssh-keygen生成。该文件严格要求权限,当其他用户对此文件有可读权限时,
•                                   :ssh将直接忽略该文件。
• ~/.ssh/id_rsa.pub       :私钥id_rsa的配对公钥。对权限不敏感。当采用公钥认证机制时,该文件内容需要复制到服务端的
•                                   :~/.ssh/authorized_keys文件中。
• ~/.ssh/rc                     :保存的是命令列表,这些命令在ssh连接到远程主机成功时将第一时间执行,执行完这些命令之后才
•                                   :开始登陆或执行ssh命令行中的命令。
• /etc/ssh/rc                  :作用等同于~/.ssh/rc。

三、常用配置

1、给自身做免密

(1)生成密钥:ssh-keygen (三次回车,不输入其他信息)

(2)复制公钥到文件中,并修改权限:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 0600 ~/.ssh/authorized_keys

(3)测试:不用输入密码即成功

ssh root@192.168.4.120

 

2、给其他服务器做免密

(1)在其中一台生成密钥:ssh-keygen (三次回车,不输入其他信息)

(2)复制本机公钥到其它机器

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10-10-35-65

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10-10-35-66

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10-10-35-67

(3)测试:不用输入密码即表示成功

ssh root@10-10-35-65

ssh root@10-10-35-66

ssh root@10-10-35-67

 

3、禁止远程登录

vi /etc/ssh/sshd_config

PermitRootLogin   yes    改为   PermitRootLogin   no

 

4、解决连接慢的问题

vi   /etc/ssh/sshd_config

UseDNS设置为no(默认为yes)。

GSSAPIAuthentication设置为 no  (默认为yes)