ssh(Secure Shell)

一、ssh 基础使用

  1. ssh 客户端使用 Secure Shell(ssh)协议连接到运行了 ssh 服务端的远程服务器上。

  2. ssh 是专为远程登录会话和其他网络服务提供安全性的协议。

    • 有效防止远程管理过程中的信息泄露;
    • 传输数据加密,可以防止 DNS 和 IP 欺骗;
    • 传输数据压缩,加快传输速度。

  3. OpenSSH 是 SSH 协议的免费开源实现,提供了服务端程序(openssh-server)和客户端程序(openssh-client)。

    • Mac 和 Linux 中默认安装了 ssh 客户端,可以直接在中断中使用 ssh 命令。
    • Windows 需要手动安装 ssh 客户端,常用的有 PuTTY 和 XShell。

  4. OpenSSH 服务端常用命令

 1 # 安装服务端(Ubuntu)
 2 sudo apt install openssh-server
 3
 4 # 安装客户端(Ubuntu)
 5 sudo apt install openssh-client
 6
 7 # 查看 ssh 服务是否开启
 8 netstat -tlp | grep ssh
 9
10 # 启动/停止/重启 ssh 服务
11 sudo /etcinit.d/ssh start
12
13 # 启动/停止/重启 ssh 服务
14 sudo /etcinit.d/ssh stop
15
16 # 启动/停止/重启 ssh 服务
17 sudo /etcinit.d/ssh restart

  5. ssh 服务端配置文件默认为 /etc/ssh/sshd_config,可以按需修改默认 22 端口等配置。

1 # 命令格式
2 $ ssh [-options] [[email protected]]
3
4 # options
5 # -p:指定 ssh 端口号,默认端口为 22
6 # -i:使用指定私钥文件连接服务器(免密登录)
    • user:远程服务器登录的用户名,默认为当前用户
    • hostname:远程服务器地址,可以是 IP、域名、别名
    • exit 或 logout 都可以退出当前登录
1 # 以colin用户登录192.168.1.196的到ssh服务器
2 $ ssh [email protected]192.168.1.196
3
4 # 以colin用户登录到192.168.1.198的ssh服务器,使用2222端口
5 $ ssh -p 2222 [email protected]192.168.1.198

二、ssh 高级配置

  1. ssh 的配置都保存在 ~/.ssh 中

    • known_hosts:作为客户端。记录曾连接服务器授权。ssh第一次连接一台服务器会有一个授权提示,确认授权后会记录在此文件中,下次连接记录中的服务器时则不再需要进行授权确认提示。
    • authorized_keys:作为服务端。客户端的免密连接公钥文件
    • config:作为客户端,记录连接服务器配置的别名

  2. 服务器别名

  远程管理命令(如 ssh、scp 等)连接一台服务器时,一般都需要提供服务器地址、端口、用户名,每次输入会很麻烦。我们可以把常用的服务器连接参数打包,记录到配置文件中,并记录一个别名。这样我们就可以通过别名来访问服务器了。

  配置方法如下:

    • 创建或打开 ~/.ssh/config,在文件中追加服务器配置信息。
    • 一台服务器的配置信息如下:
1 # 以下配置中,只有 HostName 是必选项,其余的可以省略
2 Host ColinMac
3     HostName 192.168.199.116
4     User colin
5     Port 22

  配置完成后,远程管理命令中就可以直接使用别名访问了:

1 $ ssh 116-Server
2 $ scp 123.txt 116-Server:Desktop

  3. 免密登录

1 # 命令格式
2 ssh-keygen [-options]

  options:

    • -t:指定加密类型,默认为非对称加密(rsa),所有可选项:dsa,ecdsa,ed25519,rsa
    • -f:秘钥文件名
    • -C:注释,将附加在秘钥文件尾部

  远程管理命令(如 ssh、scp 等)每次都要提供用户密码保证安全。除此之外,我们可以配置使用指定加密算法验证秘钥的方式,来避免每次输入密码。

  配置免密登录后,ssh 连接和 scp 等远程管理命令都不需要再输密码。

  生成秘钥时,如果指定了文件名,连接服务器时需要通过 -i 指定要验证的秘钥文件,譬如: ssh -i file [email protected]。默认文件名则可以省略。

  配置步骤:

1 # 客户端生成秘钥
2 ssh-keygen
3
4 # 上传公钥到服务器
5 ssh-copy-id [email protected]    # 文件会自动上传为服务器特定文件 ~/.ssh/authorized_keys

  4. 免秘钥文件登录

  i. 生成秘钥对

1 ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
2 chmod 400 ~/.ssh/[KEY_FILENAME]

  ii. 上传公钥

  iii. 简化登录

  我们可以将秘钥文件添加到 ssh 客户端 ~/.ssh/config 中,简化连接命令

1 Host *
2  AddKeysToAgent yes
3  UseKeychain yes  # only for mac
4
5 Host tu
6    HostName IP_ADDRESS
7    Port 22
8    User USERNAME
9    IdentityFile ~/.ssh/gcp
1 # 后台运行ssh-agent
2 $ eval "$(ssh-agent -s)"
3 # 添加密钥到ssh-agent
4 $ ssh-add -K ~/.ssh/gcp

原文地址:https://www.cnblogs.com/murongmochen/p/12589338.html

时间: 2024-08-02 19:49:47

ssh(Secure Shell)的相关文章

SSH(Secure SHell protocol)服务器

SSH(Secure SHell protocol)服务器:SSH协议预设提供两个服务器功能:1.类似telnet的远程联机使用shell的服务器,亦即是俗称的ssh2.类似FTP服务的sftp-server,提供更安全的FTP服务SSH使用上,主要是利用RSA/DSA/Diffie-Hellman 等机制常见的网络封包加密技术通常是藉由所谓的[非对称密钥系统]来处理:两把不一样的公钥与私钥(Public and Private Key),同一方向的联机中,两把钥匙是需要成对的公钥:提供给远程主

Linux的SSH(Secure Shell Protocol)服务

在数据传输前,SSH会对需要传输的数据进行加密,保证会话安全与会话中传输数据的安全,SSH客户端还包含一个远程拷贝scp. 1.SSH的结构 SSH服务由服务端软件(openssh)和客户端(SSH.SecureCRT.Xshell)组成,SSH默认使用22端口,SSH服务端是一个守护进程,在后台时刻监听客户端的请求,sshd就是SSH服务端的进程名 补充:(守护进程) 守护进程是一个在后台运行并且不受任何终端控制的进程.Unix操作系统有很多典型的守护进程(其数目根据需要或20-50不等),它

使用SSH(Secure Shell,安全外壳)功能实现安全的远程访问或文件管理的典型配置

Stelnet服务器的配置 # 生成RSA密钥对 [DeviceB] public-key local create rsa # 生成DSA密钥对 [DeviceB] public-key local create dsa #使能SSH服务器功能 [DeviceB] ssh server enable #配置接口ip地址 #设置stelnet客户端登陆用户界面的认证方式为scheme [DeviceB]line vty 0 63 [DeviceB-line-vty0-63]authenticat

菜鸟学SSH(十六)——Struts2内部是如何工作的

前面说完了Spring.Hibernate,很自然今天轮到struts了.struts的核心原理就是通过拦截器来处理客户端的请求,经过拦截器一系列的处理后,再交给Action.下面先看看struts官方的工作原理图: 图1 struts原理图 简单分析一下:首先客户端发来HttpServletRequest请求,传递给FilerDispatcher(ActionMapper是访问静态资源(struts的jar文件等)时用的,平时很少用),然后FilerDispatcher会为我们创建一个Acti

菜鸟学SSH(十四)——Spring容器AOP的实现原理——动态代理

之前写了一篇关于IOC的博客--<Spring容器IOC解析及简单实现>,今天再来聊聊AOP.大家都知道Spring的两大特性是IOC和AOP. IOC负责将对象动态的注入到容器,从而达到一种需要谁就注入谁,什么时候需要就什么时候注入的效果,可谓是招之则来,挥之则去.想想都觉得爽,如果现实生活中也有这本事那就爽歪歪了,至于有多爽,各位自己脑补吧:而AOP呢,它实现的就是容器的另一大好处了,就是可以让容器中的对象都享有容器中的公共服务.那么容器是怎么做到的呢?它怎么就能让在它里面的对象自动拥有它

windows下配置ssh(FreeSSHD + putty)

windows下配置ssh(FreeSSHD + putty): 1.关于配置过程找到一篇很好的博客,推荐大家先好好看一下,这篇博文解决了大方向问题. 地址:http://blog.csdn.net/lililiyunqiang/article/details/39337319 2.另附上IBM的step by step教程,思路很清晰,也讲了很多细节. 地址:https://wthwdik.wordpress.com/2011/03/28/how-to-get-freesshd-public-

SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)

原文:SQL Server自动化运维系列--监控磁盘剩余空间及SQL Server错误日志(Power Shell) 需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测.作为一个高效的DBA不可能每天都要上生产机上查看磁盘剩余或者直到磁盘无剩余空间报错后才采取扩容措施. 当然,作为微软的服务器有着自己的监控软件:SCCM(System Center

SQL Server自动化运维系列——监控跑批Job运行状态(Power Shell)

需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在上一篇文章中已经分析了SQL SERVER中关于邮件的基础配置,本篇将利用此功能对多台Server的跑批Job进行监控. 本篇实现 1.每天检查服务器中的SQL Server跑批Job的运行状态,如果跑批失败,则发邮件告诉管理员失败的明细 2.解决多台服务器同时检查 监控脚本 首先我们来解决第二个问题,关于多台服务器的问题: <1>一般监控我们需

.sh 和 .ksh —— 三种主要的 Shell简介(Korn shell)

和现在的开发语言一样,语法上有些差异! 三种主要的 Shell 与其分身 在大部份的UNIX系统,三种著名且广被支持的shell 是Bourne shell(AT&T shell,在 Linux 下是BASH).C shell(Berkeley shell,在 Linux 下是TCSH)和 Korn shell(Bourne shell的超集).这三种 shell 在交谈(interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了. Bourne shel