🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # <span style="font-size:15px">**/etc/ssh/ssh_config:客户端的配置文件**</span> ``` # Host * // 只对匹配后面字串的计算机有效,“\*”表示所有的计算机 # ForwardAgent no // 设置连接是否经过验证代理(如果存在)转发给远程计算机 # ForwardX11 no // 设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set) # RhostsRSAAuthentication no // 设置是否使用用RSA算法的基于rhosts的安全验证 # RSAAuthentication yes // 设置是否使用RSA算法进行安全验证 # PasswordAuthentication yes // 设置是否使用口令验证 # HostbasedAuthentication no // 设置是否开启主机认证 # GSSAPIAuthentication no // 是否允许使用基于 GSSAPI 的用户认证,请注意,此选项仅适用于协议版本2 # GSSAPIDelegateCredentials no // 是否将凭据转发到服务器。默认值为“否”。 # GSSAPIKeyExchange no // 指定是否可以使用基于GSSAPI的密钥交换。 使用GSSAPI密钥交换时,服务器不需要主机密钥。 默认为“否”。 # GSSAPITrustDNS no // # BatchMode no // 批处理模式,一般设为"no";如果设为"yes",交互式输入口令的提示将被禁止,这个选项对脚本文件和批处理任务十分有用 # CheckHostIP yes // 设置ssh是否连接到服务器的主机的IP地址以防止DNS欺骗 # AddressFamily any // 设置地址家族,any表示同时监听ipv4和ipv6地址 # ConnectTimeout 0 // 设置ssh连接超时时间 # StrictHostKeyChecking ask // 主机公钥确认机制 # IdentityFile ~/.ssh/identity // 设置读取用户的RSA安全验证标识 # IdentityFile ~/.ssh/id_rsa # IdentityFile ~/.ssh/id_dsa # IdentityFile ~/.ssh/id_ecdsa # IdentityFile ~/.ssh/id_ed25519 # Port 22 // 设置端口 # Protocol 2 // 设置协议版本为SSH1或SSH2,SSH1存在漏洞与缺陷,选择SSH2 # Cipher 3des // 设置加密用的密码 # Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 # EscapeChar ~ // 设置escape字符 # Tunnel no // 请求tun(4)设备在客户端和服务器之间转发。参数必须是yes、point-to-point(第3层)、ethernet(第2层)或no(默认值)。指定yes请求默认的隧道模式,即点对点。 # TunnelDevice any:any // 指定要在客户端(本地)和服务器(远程)上打开的tun(4)个设备。参数必须是local_tun[:remote_tun]。设备可以通过数字ID或关键字any指定,后者使用下一个可用的隧道设备。如果未指定remote_tun,则默认为any。默认值是任何:任何 # PermitLocalCommand no // command转义序列执行本地命令。 参数必须是yes或no(默认值) # VisualHostKey no //如果此标志设置为yes,则除了登录时和未知主机密钥的指纹字符串外,还将打印远程主机密钥指纹的ASCII艺术形式。 如果将此标志设置为no(默认值),则在登录时不会打印任何指纹字符串,并且只会为未知的主机密钥打印指纹字符串 # ProxyCommand ssh -q -W %h:%p gateway.example.com # RekeyLimit 1G 1h // 指定在重新协商会话密钥之前可以传输的最大数据量,可以选择地指定在重新协商会话密钥之前可以经过的最大时间量。 第一个参数以字节为单位指定,后缀为“ K”,“ M”或“ G”,分别表示千字节,兆字节或千兆字节。 默认值在“ 1G”和“ 4G”之间,具体取决于密码。 # # Uncomment this if you want to use .local domain # Host *.local # CheckHostIP no // 是否检查主机ip,检测主机密钥是否由于DNS欺骗而发生了更改,并在此过程中将目标主机的地址添加到〜/ .ssh / known_hosts中,而与StrictHostKeyChecking的设置无关 ``` **主机公钥确认`StrictHostKeyChecking`** 1. `StrictHostKeyChecking=no`最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网**测试**时建议使用。如果连接**server**的key在本地不存在,那么就自动添加到文件中(默认是known\_hosts),并且给出一个警告。 2. `StrictHostKeyChecking=ask`默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。 3. `StrictHostKeyChecking=yes`最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。 # <span style="font-size:15px">**/etc/ssh/sshd_config:服务端的配置文件**</span> ``` Port 29 // 设置端口 #ListenAddress 0.0.0.0 // 设置sshd服务器绑定的IP地址 #ListenAddress :: HostKey /etc/ssh/ssh_host_rsa_key // 设置包含计算机私人密匙的文件 #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #LogLevel INFO // 设置记录sshd日志消息的层次 # Authentication: #LoginGraceTime 2m // 设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间 #StrictModes yes // 设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权 #MaxAuthTries 6 // 指定每个连接允许的最大身份验证尝试次数。 一旦故障数量达到该值的一半,就会记录其他故障。 预设值为6 #MaxSessions 10 // 指定每个网络连接允许的最大开放shell、登录或子系统(例如sftp)会话数。支持连接多路复用的客户端可以建立多个会话。将MaxSessions设置为1将有效地禁用会话多路复用,而将其设置为0将阻止所有shell、登录和子系统会话,同时仍允许转发。默认值为10。 #PubkeyAuthentication yes // 指定是否允许公共密钥身份验证。 默认值为是 # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys // AuthorizedKeysFile文件路径 #AuthorizedPrincipalsFile none // 指定一个文件,该文件列出了证书认证可接受的主体名称。 当使用由TrustedUserCAKeys中列出的密钥签名的证书时,此文件列出名称,必须在证书中显示其中一个名称,以便接受身份验证 #AuthorizedKeysCommand none // 指定用于查找用户公钥的程序。 该程序必须由root拥有,不能由组或其他人写入,并且必须由绝对路径指定 #AuthorizedKeysCommandUser nobody // 指定在其帐户下运行AuthorizedKeysCommand的用户。建议使用在主机上除了运行授权密钥命令之外没有其他角色的专用用户 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no // 指定是rhosts还是/etc/主机.equiv允许身份验证和成功的公钥客户端主机身份验证(基于主机的身份验证)。默认值为“否” # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no // 指定在HostbasedAuthentication期间,sshd(8)是否应忽略用户的〜/.ssh/known_hosts。默认值为否。 # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes // 指定在基于主机的身份验证中不使用.rhosts和.shosts文件 # To disable tunneled clear text passwords, change to no here! #PermitEmptyPasswords no // 设置是否允许用口令为空的帐号登录 # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes // 指定是否允许质询响应身份验证,默认为yes ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no // 指定是否将通过Kerberos KDC验证用户为PasswordAuthentication提供的密码。要使用这个选项,服务器需要一个kerberoservtab,它允许验证KDC的身份。默认值为no。 #KerberosOrLocalPasswd yes // 如果通过Kerberos的密码身份验证失败,则将通过任何其他本地机制(例如/ etc / passwd)来验证密码。 默认yes #KerberosTicketCleanup yes // 指定是否在注销时自动销毁用户的票证缓存文件。 默认值为yes #KerberosGetAFSToken no // 如果AFS处于活动状态,并且用户具有Kerberos 5 TGT,请尝试在访问用户的主目录之前获取AFS令牌,默认值是no #KerberosUseKuserok yes // 指定是否在.k5login文件中查看用户的别名,默认值是yes # GSSAPI options GSSAPIAuthentication yes // 指定是否允许基于GSSAPI的用户身份验证。 默认为no GSSAPICleanupCredentials no // 指定是否在注销时自动销毁用户的凭据缓存。 默认值为是。 #GSSAPIStrictAcceptorCheck yes // 确定是否严格要求客户端进行身份验证的GSSAPI接受者的身份。 如果设置为yes,则客户端必须针对当前主机名上的主机服务进行身份验证。 如果设置为no,则客户端可以针对存储在计算机默认存储中的任何服务密钥进行身份验证。默认值为是。 #GSSAPIKeyExchange no // 指定是否允许基于GSSAPI的密钥交换。 GSSAPI密钥交换不依赖ssh密钥来验证主机身份,默认值是no #GSSAPIEnablek5users no // 指定是否查看.k5users文件以进行GSSAPI身份验证访问控制,默认值是no # 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 # PAM authentication via ChallengeResponseAuthentication may bypass # If you just want the PAM account and session checks to run without # and ChallengeResponseAuthentication to 'no'. # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several # problems. UsePAM yes // 启用可插拔身份验证模块接口。如果设置为yes,则除了对所有身份验证类型进行PAM帐户和会话模块处理外,还将使用ChallengeResponseAuthentication和PasswordAuthentication启用PAM身份验证 #AllowAgentForwarding yes // 指定是否允许ssh代理(1)转发。默认值为“是” #AllowTcpForwarding yes // 指定是否允许TCP转发。 可用选项为是(默认)或全部以允许TCP转发,否为阻止所有TCP转发 #GatewayPorts no // 指定是否允许远程主机连接到为客户端转发的端口。默认情况下,sshd(8)将远程端口转发绑定到环回地址。这将阻止其他远程主机连接到转发端口。网关端口可用于指定sshd应允许远程端口转发绑定到非环回地址,从而允许其他主机连接。参数可以是no以强制远程端口转发仅对本地主机可用,yes可以强制远程端口转发绑定到通配符地址,或者指定clients以允许客户端选择转发绑定到的地址 X11Forwarding yes // 指定是否允许X11转发。 参数必须为yes或no。 默认为“否”。 #X11DisplayOffset 10 #X11UseLocalhost yes // 指定sshd(8)应该将X11转发服务器绑定到回送地址还是通配符地址。 默认情况下,sshd将转发服务器绑定到环回地址,并将DISPLAY环境变量的主机名部分设置为localhost。 这样可以防止远程主机连接到代理显示器。 但是,某些较旧的X11客户端可能无法使用此配置。 X11UseLocalhost可以设置为no,以指定转发服务器应绑定到通配符地址。 参数必须为是或否。 默认值为是 #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes // 设置系统是否应向另一侧发送TCP keepalive消息 #UseLogin no #UsePrivilegeSeparation sandbox // 是否通过创建一个非特权子进程来处理传入的网络流量来分离特权。身份验证成功后,将创建另一个具有已验证用户权限的进程。权限分离的目标是通过包含未授权进程中的任何损坏来防止权限升级。或者不是,必须是沙箱。如果usePrivilegeSeption设置为sandbox,则未经授权的预身份验证进程将受到其他限制。 #PermitUserEnvironment no // 指定〜/.ssh/authorized_keys中的〜/.ssh/environment和environment =选项是否由sshd(8)处理。 默认为“否”。 启用环境处理可能使用户能够使用LD_PRELOAD之类的机制绕过某些配置中的访问限制 #Compression delayed // 指定在用户成功认证后是否启用压缩。 参数必须为yes,delayed(是yes的传统同义词)或no #ClientAliveInterval 0 // 设置超时间隔(以秒为单位),默认值为0,表示这些消息不会发送到客户端 #ClientAliveCountMax // 设置在没有接收到来自客户端的任何消息的情况下可以发送的客户端活动消息的数目。 如果在发送客户端活动消息时达到此阈值,则sshd将断开客户端连接,从而终止会话。默认值为3。如果ClientAliveInterval设置为15,并且ClientAliveCountMax保留默认值,则无响应的SSH客户端将在大约45秒后断开连接。 #ShowPatchLevel no // 指定sshd是否将在标识字符串中显示二进制文件的补丁程序级别。 补丁程序级别在编译时设置。 默认为“否”。 此选项仅适用于协议版本1。 #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 // 指定到SSH守护程序的并发未认证连接的最大数量。 其他连接将被丢弃,直到身份验证成功或该连接的LoginGraceTime过期为止。 默认值为10:30:100。 #PermitTunnel no // 指定是否允许tun(4)设备转发。 该参数必须为是,点对点(第3层),以太网(第2层)或否。 指定“是”将允许点对点和以太网。 默认为“否”。 #ChrootDirectory none // 指定身份验证后chroot(2)到的目录的路径名。在会话启动时,sshd(8)检查路径名的所有组件是否都是根目录,这些目录不能被任何其他用户或组写入 #VersionAddendum none // 指定其他文本,以附加到服务器在连接后发送的SSH协议标语上。 默认为无 # no default banner path #Banner none # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server UseDNS no // 服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗。平时我们都是动态 IP不会有PTR记录,所以打开此选项也没有太多作用。我们可以通过关闭此功能来提高连接 OpenSSH 服务器的速度 AddressFamily inet PermitRootLogin yes // 设置root是否可以使用ssh登录,参数必须为:yes, prohibit-password, without-password, forced-commands-only, or no。 SyslogFacility AUTHPRIV // 提供从sshd(8)记录消息时使用的工具代码。 可能的值为:DAEMON,USER,AUTH,AUTHPRIV,LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,LOCAL6,LOCAL7。 默认值为AUTH。 PasswordAuthentication yes // 指定是否允许密码认证。 默认是 ``` **设置root是否可以使用ssh登录:PermitRootLogin** 1. yes:允许登录 2. prohibit-password/without-password:将此选项设置为禁止密码或不带密码,则root用户将禁用密码和键盘交互身份验证 3. forced-commands-only:将此选项设置为“仅强制命令”,则仅允许在指定了命令选项的情况下允许使用公用密钥身份验证的root登录(即使通常不允许root登录,这对于进行远程备份也很有用)。 root禁用所有其他身份验证方法 4. no:不允许root用户登录