帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
远程连接——SSH
发布时间:2024-03-10 20:01:49   分类:帮助文档
远程连接——SSH 简介 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。 优点: 数据传输是加密的,可以防止信息泄漏 数据传输是压缩的,可以提高传输速度 原理 SSH客户端<--------------网络---------------->SSH服务端 SSH客户端:Putty、 Xshell、CRTSSH服务端:OpenSSH ssh免密码登录主要采用算法: 对称加密算法 原理:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。 特点:计算量小、加密解密的速度比较快,适合数据比较长时的使用; 密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦。 非对称加密算法 原理:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 特点:非对称加密技术安全性更好,但性能更慢。 安装 Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。sshd服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)sshd服务的默认配置文件是/etc/ssh/sshd_ config 检查是否安装: ssh -V 已经安装如下所示: (base) [root@localhost homes]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 (base) [root@localhost homes]# 查看一下和ssh相关的安装包: # centos yum search ssh # ubantu sudo apt-get install ssh 存在ssh的安装包: (base) [root@localhost homes]# yum search ssh 已加载插件:fastestmirror, langpacks Repository libnvidia-container is listed more than once in the configuration Repository libnvidia-container-experimental is listed more than once in the configuration Repository nvidia-container-runtime is listed more than once in the configuration Repository nvidia-container-runtime-experimental is listed more than once in the configuration Loading mirror speeds from cached hostfile .... scponly.x86_64 : Restricted shell for ssh based file services sshuttle.noarch : Transparent Proxy VPN sslh.x86_64 : Applicative protocol(SSL/SSH) multiplexer 使用yum安装: # rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件 # 安装SSH协议 yum -y install ssh openssh openssh-clients openssh-server rsync 配置 OpenSSH常用配置文件 类型路径说明客户端配置文件/etc/ssh/ssh_config设置与客户端相关的应用可通过此文件实现服务器端配置文件/etc/ssh/sshd_config设置与服务端相关的应用可通过此文件实现 修改配置文件: # 备份原始配置文件 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori vim /etc/ssh/sshd_config 修改内容如下: 参数值说明Port22sshd服务监听端口ListenAddress0.0.0.0sshd服务监听ipLoginGraceTime 2m登录验证时间为2分钟(默认2分钟)PermitRootLogin yes是否允许root远程登录StrictModes yes检查.ssh/文件的所有者,权限等MaxAuthTries 6用来设置最大失败尝试登陆次数为MaxSessions 10同一个连接最大会话UseDNS no提高速度可改为no 内网改为no 禁用反向解析PubkeyAuthenticationyes基于key验证PermitEmptyPasswords no是否允许空密码登录PrintLastLog yes显示上次登入的信息!默认为 yesPasswordAuthenticationyes是否启用密码验证AuthorizedKeysFile .ssh/authorized_keys 指定公钥库文件(ls -a可查看)GatewayPorts no网关ClientAliveInterval 10单位:秒ClientAliveCountMax3默认3GSSAPIAuthentication no提高速度可改为noaxStartups 10未认证连接最大值,默认值10AllowUsers user1 user2 user3@ip(限制主机)可登录用户:白名单DenyUsers user1 user2 user3@ip(限制主机)禁登录用户:黑名单AllowGroups g1 g2可登录用户组:白名单DenyGroupsg1 g2可登录用户组:白名单 设置开机自启: # 检查是否修改成功 vimdiff /etc/ssh/sshd_config.ori /etc/ssh/sshd_config # 查看开机启动sshd服务 systemctl is-enabled sshd # 未开启 disabled # 已开启 enabled # 开启开机自启 chkconfig sshd on # 禁止开机自启 chkconfig sshd off 命令 ssh 语法 ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] 选项 参数名参数值说明-a关闭认证代理联机-pport连接远程机器上的port。-P使用非特定的 port 去对外联机。如果读者的防火墙不淮许从特定的 port去联机时,就可以使用这个选项。注意这个选项会关掉 RhostsAuthentication 和 RhostsRSAAuthentication。-q安静模式。把所有的警告和讯息抑制,只有严重的错误才会被显示。-Llisten-port:host:port指派本地的 port 到达端机器地址上的 port。-Rlisten-port:host:port指派远程上的 port 到本地地址上的 port。-t强制配置 pseudo-tty。这可以在远程机器上去执行任意的 screen-based 程 式,例如操作 menu services。-n重导 stdin 到 /dev/null (实际上是避免读取 stdin)。必须当 ssh 在幕后执 行时才使用。常见的招数是使用这选项在远程机器上去执行 X11 的程序 例如,ssh -n shadows.cs.hut.fi emacs &,将在 shadows.cs.hut.fi 上激活 emace,并且 X11 连接将自动地在加密的信道上发送。ssh 程序将把它放 在幕后。(假如ssh需要去询问密码时,这将不会动作) -iidentity_file选择所读取的 RSA 认证识别的档案。预设是在使用者的家目录 中的 .ssh/identity 。-g允许远程主机去连接本地指派的 ports。 -echaracter设定跳脱字符。 -f要求ssh 在背景执行命令,假如ssh要询问密码或通行证,但是使用者 想要它在幕后执行就可以用这个方式,最好还是加上-l user 例如在远程场所上激活 X11,有点像是 ssh –f host xterm 。 -V显示版本。-vVerbose 模式。使ssh 去印出关于行程的除错讯息,这在连接除错,认 证和设定的问题上有很的帮助。 -cblowfish|3des 在期间内选择所加密的密码型式。预设是3des,3des(作三次的资料加密) 是用三种不同的密码键作三次的加密-解密-加密。 blowfish 是一个快速区块密码编制器,它比3des更安全以及更快速。-llogin_name指定登入于远程机器上的使用者,若没加这个选项,而直接打 ssh lost 也是可以的,它是以读者目前的使用者去做登入的动作。 例如: ssh –l shie mouse.oit.edu.tw 。-X-N是不执行远端命令,在只是端口转发时这条命令很有用处。-T不显示终端,只显示连接成功信息。-2强制 ssh 去使用协议版本 2。 -4强制 ssh 去使用 IPv4 地址。-6强制 ssh 去使用 IPv6 地址。 ssh-keygen 语法 ssh-keygen [OPTIONS] ... 选项 参数名参数值说明-b指定密钥长度-a保存私钥时,此选项指定使用的 KDF(密钥派生函数,当前为 bcrypt_pbkdf(3))轮数。较高的数字会导致密码验证速度变慢,并增加对暴力密码破解的抵抗力(如果密钥被盗)。默认值为 16 轮-A<>对于不存在主机密钥的每种密钥类型(rsa、dsa、ecdsa 和 ed25519),生成具有默认密钥文件路径、空密码、密钥类型的默认位和默认注释的主机密钥。如果还指定了 -f,则其参数用作生成的主机密钥文件的默认路径的前缀。系统管理脚本使用它来生成新的主机密钥-e<>读取 OpenSSH 的私钥或者公钥文件-c请求更改私钥和公钥文件中的注释。程序将提示输入包含私钥的文件,如果密钥有密码,则提示输入密码,以及新的评论。-C<注释 >注释 -f指定用来保存密钥的文件名-i<>读取未加密的 ssh-v2 兼容的私钥/公钥文件,然后在标准输出设备上显示 openssh 兼容的私钥/公钥-M<生成>生成候选 Diffie-Hellman 组交换 (DH-GEX) 参数,以供“diffie-hellman-group-exchange-*”密钥交换方法最终使用。此操作产生的数字在使用前必须进一步筛选。-l<>显示公钥文件的指纹数据-L<>打印一个或多个证书的内容-k<>生成一个 KRL 文件。在这种模式下,ssh-keygen 将在通过 -f 标志指定的位置生成一个 KRL 文件,该文件会撤销命令行上提供的每个密钥或证书。要撤销的密钥/证书可以由公钥文件指定-K<>从 FIDO 身份验证器下载常驻密钥。对于每个下载的密钥,公钥和私钥文件将写入当前目录。如​​果附加了多个 FIDO 验证器,将从第一个接触的验证器下载密钥-N提供一个新密语-n<主体>指定签名密钥时要包含在证书中的一个或多个主体(用户名或主机名)。可以指定多个主体,用逗号分隔-P提供(旧)密语-q<>静默模式-t指定要创建的密钥类型-C<>用于识别这个密钥的注释 ,这个注释你可以输入任何内容(邮箱),很多网站和软件用这个注释作为密钥的名字-E指纹哈希 指定显示密钥指纹时使用的哈希算法。默认值为“sha256”。-g<>使用 -r 命令打印指纹资源记录时使用通用 DNS 格式-H<>散列 known_hosts 文件。这将使用指定文件中的散列表示替换所有主机名和地址;原始内容被移动到带有 .old 后缀的文件中。 ssh 和 sshd 可以正常使用这些哈希值,但如果文件的内容被泄露,它们不会泄露识别信息。此选项不会修改现有的散列主机名,因此可以安全地用于混合散列和非散列名称的文件。-h<>签署密钥时,创建主机证书而不是用户证书-l<>证书身份-F主机名 | [hostname]:port 在 known_hosts 文件中搜索指定的主机名(带有可选端口号),列出找到的所有匹配项。此选项对于查找散列主机名或地址很有用,也可以与 -H 选项结合使用,以散列格式打印找到的键-B<>显示指定私钥或公钥文件的泡泡摘要-D<>pkcs11 下载 PKCS#11 共享库 pkcs11 提供的公钥。当与 -s 结合使用时,此选项表示 CA 密钥驻留在 PKCS#11 令牌中(有关详细信息,请参阅证书部分)-p<>请求更改私钥文件的密码,而不是创建新的私钥。程序将提示输入包含私钥的文件,输入旧密码,两次输入新密码。-Q<>请求更改私钥文件的密码,而不是创建新的私钥。程序将提示输入包含私钥的文件,输入旧密码,两次输入新密码。-R主机名 | [hostname]:port 从 known_hosts 文件中删除属于指定主机名(带有可选端口号)的所有键。此选项对于删除散列主机很有用(请参阅上面的 -H 选项)-r打印指定公钥文件的名为 hostname 的 SSHFP 指纹资源记录-s使用指定的 CA 密钥验证(签名)公钥。生成 KRL 时,-s 指定用于通过密钥 ID 或序列号直接撤销证书的 CA 公钥文件的路径-U<>当与 -s 结合使用时,此选项表示 CA 密钥驻留在 ssh-agent 中-u<>更新 KRL。当使用 -k 指定时,通过命令行列出的键被添加到现有的 KRL,而不是创建新的 KRL。-V<>有效性间隔-v<详细模式>使 ssh-keygen 打印有关其进度的调试消息。这有助于调试模数生成。多个 -v 选项会增加详细程度。最大值为 3。-w<提供者>指定在创建 FIDO 身份验证器托管密钥时将使用的库路径,覆盖使用内部 USB HID 支持的默认设置。-y<>此选项将读取私有 OpenSSH 格式文件并将 OpenSSH 公钥打印到标准输出。-z<序列号>指定要嵌入证书中的序列号,以将此证书与来自同一 CA 的其他证书区分开来。如果序列号以“+”字符为前缀,则序列号将为在单个命令行上签名的每个证书递增。默认序列号为零。生成 KRL 时,-z 标志用于指定 KRL 版本号。-Z指定在编写 OpenSSH 格式的私钥文件时用于加密的密码。可以使用“ssh -Q cipher”获取可用密码列表。默认为“aes256-ctr”。 示例 密码登录 ssh -l root 192.168.0.11 # or ssh root@192.168.0.11 不指定用户登录 ssh 192.168.0.11 免密登录 192.168.1.66主机想要通过ssh免密登录192.168.1.78主机,需要在两个主机上都创建公匙与密匙。并且把192.168.1.66的公匙存放在192.168.1.78主机上。 OS类型用户路径(默认)linux公匙文件root/root/.ssh/id_rsa.publinux公匙文件user ~/.ssh/id_rsa.publinux密匙文件root/root/.ssh/id_rsawindows公匙文件user_nameC:\Users\User\user_name\.ssh\id_rsa.pubwindows密匙文件user_nameC:\Users\User\user_name\.ssh\id_rsalinux密匙文件user~/.ssh/id_rsa 创建RSA密匙 这是没有任何参数的 ssh keygen 的默认行为。默认情况下,它创建 RSA 密钥对,将密钥存储在 ~/.ssh 目录下。请注意,它创建的文件名id_rsa为私钥,id_rsa.pub 为公钥。 [root@localhost ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "shoufeng" # ~密钥类型 ~密钥文件路径及名称 ~ 备注信息 Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): # 输入密码, 若不输入则直接回车 Enter same passphrase again: # 再次确认密码, 若不输入则直接回车 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 9a:e3:94:b9:69:c8:e9:68:4b:dc:fa:43:25:7f:53:f1 shoufeng The key's randomart image is: +--[ RSA 2048]----+ | | | . | | o | | . . . E | | + S. | | . .. .=o | | oo.oB. . | | ..o=o.+ | | .++oo+ | +-----------------+ 注意: 密钥的文件名称必须是id_xxx, 这里的xxx就是-t参数指定的密钥类型. 比如密钥类型是rsa, 那么密钥文件名就必须是id_rsa. 修改文件权限 chmod 600 /root/.ssh/id_rsa chmod 600 /root/.ssh/id_rsa.pub scp上传公匙 scp /root/.ssh/id_rsa.pub root@192.168.1.78:/root/.ssh/authorized_keys 注意: 如果192.168.1.78主机上的/root/.ssh/authorized_keys文件中存在其他主机的公匙,不要使用scp,否在会出现文件覆盖,删除已有的公匙。仅需把192.168.1.66的公匙添加到192.168.1.78主机上的/root/.ssh/authorized_keys文件中即可。 补充 将SSH密钥转换为不同的格式 默认情况下,由 ssh-keygen 生成的密钥将由 OpenSSH 实现使用。但是,如果要将这些密钥转换为 SSH 商业实现(例如:SSH2),请使用如下所示的 -e 选项。 # ssh-keygen -e Enter file in which the key is (/root/.ssh/id_rsa): ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "2048-bit RSA, converted from OpenSSH by root@devdb" AAAAB3NzaC1yc2EAAAABIwAAAQEA5kSivOqhs0U9ZMN20nxFe27QZ3t0lT2zbH7OSXylKd 1rjAjYXGnSXC9j2uaZlemHlptBKVziMJC86ha7Hcj6dVOVrDQ6vF4q34bOCjtKLphQ0IjB zVIvqILH9eLJdRaOrS34CmgmPaisrCk5wKVlakygvUfcj3HzaTKS6THyZDGx5shdTpa9lb y8tpOD3JceV7ay4w8r0DipoKPC0OLpvS4EABEeMo9sx8zQEaKv03XygjNCCYtFvxlQQIRG lVoL7mPaHSaL3anI05RpNbm/PS+9BhZg+BqNjU4ofHBbfkXk5MiN6M7ieR4Sk5BquccboG F13U5slNgmCEekdt0amw== ---- END SSH2 PUBLIC KEY ---- 可以使用以下命令指定文件并将输出存储到其他文件。 # ssh-keygen -e -f /root/.ssh/id_rsa > /root/.ssh/id_rsa.ssh2 # cat /root/.ssh/id_rsa.ssh2 ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "2048-bit RSA, converted from OpenSSH by root@devdb" AAAAB3NzaC1yc2EAAAABIwAAAQEA5kSivOqhs0U9ZMN20nxFe27QZ3t0lT2zbH7OSXylKd 1rjAjYXGnSXC9j2uaZlemHlptBKVziMJC86ha7Hcj6dVOVrDQ6vF4q34bOCjtKLphQ0IjB zVIvqILH9eLJdRaOrS34CmgmPaisrCk5wKVlakygvUfcj3HzaTKS6THyZDGx5shdTpa9lb y8tpOD3JceV7ay4w8r0DipoKPC0OLpvS4EABEeMo9sx8zQEaKv03XygjNCCYtFvxlQQIRG lVoL7mPaHSaL3anI05RpNbm/PS+9BhZg+BqNjU4ofHBbfkXk5MiN6M7ieR4Sk5BquccboG F13U5slNgmCEekdt0amw== ---- END SSH2 PUBLIC KEY ---- 搜索已知主机文件 您也可以使用 ssh-keygen 在 ~/.ssh/known_hosts 文件中搜索密钥。当known_hosts文件中有很多条目时,这很有用。 以下输出指示它在 #10 行的已知主机文件中找到了“dev-db”的条目。 # ssh-keygen -F dev-db # Host dev-db found: line 10 type RSA dev-db ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA7QEcjRkbBWpwE7zIShobue9aEGyVObVHDLhK== 显示给定私钥的公钥 以下示例将显示默认 /root/.ssh/id_rsa 私钥的公钥。 # ssh-keygen -y Enter file in which the key is (/root/.ssh/id_rsa): ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5kSivOqhs0U9ZMN20nxFe27QZ3t0lT2zbH7OSX== 您还可以使用 -f 选项指定权限键。在此示例中,它将显示 ~/.ssh/id_dsa 私钥的公钥。 # ssh-keygen -y -f ~/.ssh/id_dsa ssh-dss AAAAB3NzaC1kc3MAAACBAIpmvehoOuFwJ5YHV+7BCrAinV0BZbkUvxkX8KK2prDmynhT== 错误 如果出现上述错误: 可能是B机之前存有A机的公匙,但是A机重新装系统了,需要把旧的公匙删除掉。然后手动复制A机地公匙文件到B机,注意需要修改文件名称为authorized_keys。当你用ssh连接到一个新的服务器的时候,ssh会让你确认服务器的信息(域名、IP、公钥),如果你确认了,就会写到known_hosts里。 参考 ssh-keygen 用法和命令 - Dirigent - 博客园 (cnblogs.com) Linux基础—— SSH免密登录 - 知乎 (zhihu.com) 如何在linux中安装ssh服务_linux安装ssh_沈信得的博客-CSDN博客 Linux安装以及ssh连接 - 简书 (jianshu.com) Linux的ssh监听多个端口 - 腾讯云开发者社区-腾讯云 (tencent.com) SSH服务配置_ssh配置_Liq1的博客-CSDN博客 Linux 安装SSH服务 (CentOS 7) (baidu.com) linux的SSH(远程登录)服务_linux ssh_芒地狠的博客-CSDN博客 linux之ssh命令详解_linux ssh_xiaokanfuchen86的博客-CSDN博客 linux ssh命令详解 (taodudu.cc)
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价