SSH 使用客户端-服务器模型,标准端口为 22。服务器端需要开启 SSH 守护进程接受远端的连接,而用户需要使用 SSH 客户端与服务端连接。
最常见的开源实现是 OpenSSH
登录:
在远程机器上执行 command,把 stdout,stderr 送回来然后断开连接:
常用参数:
scp 是一个命令行工具,是英文 secure copy 的缩写,用于在服务器和客户端之间传输文件, *** 作类似cp。
使用注意点:远程主机名后要加个冒号再跟路径。如:
SSH 以非对称加密实现身份验证。身份验证有多种途径,可以使用密码来认证,也可以通过实现配置好的密钥文件来认证。
通过密钥认证登录的条件:
我们通常使用 ssh-keygen 这个工具来生成公钥和私钥,如下:
这会生成两个文件 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub ,前者是私钥,我们应该小心保护,后者是公钥,应当将其放到服务端的 ~/.ssh/authorized_keys 中去,我们可以使用 ssh-copy-id 这个工具来完成:
或者手动将其复制粘贴过去。
也可以使用如下命令:
跳板机,又常叫做“Bastion host”。
在企业中,业务服务器通常有 ip 限制,不允许直接从办公机登录,而是需要先登录一个跳板机,通过跳板机来登录业务服务器。
这样做的目的是:隔离内部网络,只允许从跳板机访问,那么我们只需要特别关注跳板机的安全配置就可以了,便于更好的进行安全控制。
我们可以配置 ssh 客户端,让 ssh 替我们处理跳板机的登录,避免多次输入命令的负担。
假设我们有跳板机 jumpserver 和 目标服务器 targetserver。
方法一、使用命令行的 -J 参数
方法二、配置文件: ~/.ssh/config
然后就可以直接:
sshd 的配置文件: /etc/ssh/sshd_config 。
我们可以修改 sshd 的默认配置来增强系统的安全性,以下是一些需要注意的配置项:
web.xml是服务器软件必须要有的, 任何服务器软件(tomcat jboss等),启动的时候首先加载web.xml文件, 按照文件里面配置的监听器,过滤器, servlet, 第三方框架等来加载相应的配置, SSH框架中一般需要配置的就是spring的配置文件(application-context.xml), struts2的配置文件(struts.xml), struts1的配置文件(struts-config.xml), 整合后Hibernate.cfg.xml就不需要了, 因为hibernate.cfg.xml里面配置的是数据库的连接信息和映射文件信息, 在整合后这些信息是放在spring的配置文件中的.web.xml是tomcat和jboss等按照加载顺序来加载各种配置文件的入口,
简单来说,ssh是一种 网络协议 ,用于计算机之间的加密登录。如果一个用户从本地计算机,使用ssh协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
SSH 之所以安全是采用了公钥加密的方式,通过客户自己签发公钥加密用户密码,再通过主机持有的私钥解密;不像 HTTPS 协议存在证书管理中心CA用于验证公钥的合法性,因此,存在被中间人劫持的风险,即劫持登录请求发送篡改的公钥来截获用户登录密码,俗称”中间人攻击“;
不过 SSH 存在一套自有的验证方式:口令验证及密钥验证,可有效避免大部分的攻击;
使用上述命令测试连接性及验证流程;
通过 ssh-keygen 工具生成本地公钥文件,常用命令如下:
在 $HOME/.ssh/ 目录下,会新生成两个文件: id_rsa.pub 和 id_rsa 。 id_rsa.pub 是公钥, id_rsa 是私钥,其中 id_rsa 为默认文件名称,若如上图指定了文件路径及名称,则按照指定路径及文件名生成;
说明:若 ssh 登录使用密钥验证方式登录,则需要输入私钥的密码(生成密钥时指定的密码),若使用 ssh-agent 代理,则在同一个 session 会话下,只需要输入一次私钥密码即可,由 ssh-agent 帮我们代理,避免每次登录都需要输入私密码;
若登录时未开启,可手动开启 ssh-agent ,可通过如下命令:
添加生成的 SSH key 到 ssh-agent :
查看添加的 SSH key :
若需要免密登录,则需要将用户的 public key 文件内存追加复制到登录主机的 authorized_keys 配置文件中(默认路径为 ~/.ssh/authorized_keys ),或者直接通过 ssh-copy-id 工具完成,具体如下:
使用上述命令后即可实现 免密登录 ;
ssh 配置包括系统级别的(针对客户端的默认为 /etc/ssh/ssh_config ,针对服务端的``/etc/ssh/sshd_config )及用户级别的配置文件(默认为 ~/.ssh/config`);且配置文件存在优先级,低优先级的配置项可视作默认值;而高优先级的配置项则会覆盖默认值。按优先级,有如下排序:
/etc/ssh/config 配置文件选项如下:
/etc/ssh/sshd_config 配置文件选项如下:
常用的选项如下:
ssh -T [email protected] 验证连接性,成功如下:
ssh配置文件详解
git-ssh 配置和使用
ssh-keygen - Generate a New SSH Key
最佳搭档:利用 SSH 及其配置文件节省你的生命
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)