前端工程师必会之ssh命令

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 前端工程师必会之ssh命令

SSH 协议


原理部分较为深奥,我将基于对Linux ssh command的翻译对SSH做一些探索,会加入一些自己的实验和总结,主要目的在于:应用。


Linux SSH COMMAND


这一页主要是Unix/Linux或者Mac终端的OpenSSH ssh命令。几乎所有的Unix和Linux系统包括ssh命令。这个命令可以用来开启SSH 客户端程序,从而建立SSH 服务器与远程机器之间的安全连接。ssh命令有以下用途:
  • 登录远程机器
  • 在两台机器间传输文件
  • 在远程机器上执行命令


Linux的SSH 命令


ssh命令可以在不安全的网络中对两个主机建立安全的加密连接。这个连接可用于终端验证,文件传输,以及与其他应用建立通道。Graphical X11应用可以通过SSH命令在远程安全运行。


其他的 SSH 命令


除了SSH客户端命令,这里有一些其他的SSH命令。每一个`都有自己的page。

- ssh-keygen - 为公钥验证创建钥匙对。
- ssh-copy-id - 在服务器上配置公钥的授权。
- ssh-agent - 用于保存**单点登录**私钥的代理程序
- ssh-add - 添加秘钥到代理的工具
- scp - 基于RCP-like命令接口的文件传输客户端
- sftp - 基于FTP-like命令接口的文件传输客户端
- sshd - OpenSSH 服务器


使用Linux SSH 客户端


Linux默认使用OpenSSH客户端。ssh命令可以登录到一个远程机器非常好用。为了登录到名为sample.ssh.com的远程计算机,在shell命令行输入下面的命令:


ssh sample.ssh.com

如果这是你第一次使用ssh连接远端的机器,你将看到下面的信息:


The authenticity of host 'sample.ssh.com' cannot be established.
DSA key fingerprint is 04:48:30:31:b0:f3:5a:9b:01:9d:b3:a7:38:e2:b1:0c.(或者是RSA key fingerprint is SHA256:foo0a1b /bar0a1b )
Are you sure you want to continue connecting (yes/no)?


输入yes继续。这将添加服务到你的已知host文件中。(~/.ssh/known_hosts),会给出下面的提示信息:

Warning: Permanently added 'sample.ssh.com' (DSA) to the list of known hosts.
(或者Warning: Permanently added 'fe.crm.test.weidiango.com' (RSA) to the list of known hosts.
)


known_hosts文件的格式如下,以github为例:

github.com,13.229.188.59 ssh-rsa AAAAB3NzaC1yc2EA...

格式为 域名, ip地址 ssh-rsa/ssh-dsa public key,在使用ssh登录远程主机时,远程主机会为你返回public key。


每一个服务器都有一个host key,通过上面的与验证相关的问题可以验证并且保存host key,所以下次你连接服务器时,host key可以识别出这是相同的服务器。


一旦连接建立,用户就完成了认证。通常来说,它会提醒你输入密码。对于一些服务器,你将输入硬编码的密码。


一旦验证通过,你将可以通过本地的终端,键入命令去控制远程的机器。


指定不同的用户名


可以通过命令指定不同的用户登录:

ssh alternative-username@sample.ssh.com


也可以用下面的语法表示:

ssh -l alternative-username sample.ssh.com


在服务器上执行远程命令

ssh命令可以在不登录的情况下执行远程机器的命令。语法如下:


ssh hostname command

例如,执行下面的命令


ls /tmp/doc


在主机sample.ssh.com,键入下面的命令

ssh sample.ssh.com ls /tmp/doc


或者是

ssh root@192.169.33.32 ls /etc


注意:

1.在不登录的情况下,没次都需要输入root用户的密码。

2.若不指定用户名,则会登录到你本地的当前用户名账号。

例如:frankdeiMac:~ frank$ ssh 192.169.33.32

会提示输入:frank@192.169.33.32's password:

在远程服务器验证完后,远程目录中的内容将会被展示出来,而且你将返回自己的本地shell 终端。-x 禁用Disables X11转发。


退出ssh登录


exit


SSH客户端配置文件


ssh的配置文件位于~/.ssh/config。可查阅SSH client configuration file

SSH公钥认证


ssh-keygen以及ssh-copy-id,macOS的公钥位于 ~/.ssh/id_rsa.pub,windows的位于C:\Users\username\.ssh\id_rsa.pub


配置端口转发


可以本地转发(本地端口转发到服务器的Ip地址和端口)。可以远程转发(远程端口转发到客户端的Ip地址和端口)。

OpenSSH支持通过通道设备转发Unix 域名socket和IP 包,从而建立VPN(Virtual Private Network)。


SSH 命令行参数


下面是一些非常重要的OpenSSH客户端命令行参数。


- 1 使用第1版本的协议
- 2 使用第2版本的协议
- 4 仅使用IPv4地址
- 6 仅使用IPv6地址
- A 开启代理认证转发
- a 禁用代理认证转发
- C 使用数据压缩
- c cipher_spec 选择密码格式去加密session。
- D [bind_address:]port 动态应用级端口转发。这会分配一个套接字来侦听本地端口。当与此端口建立连接时,将通过安全通道转发连接,然后使用应用程序协议确定从远程计算机连接的位置。
- E log_file 添加一个debug日志到log_file而不是标准错误。
- F configfile 指定用户的ssh配置文件,默认的位于~/.ssh/config。
- g 允许远程主机链接到本地的转发端口。
- i identity_file 认证文件,公钥文件。
- J [user@]host[:port] 连接创建ssh连接到pjump主机(/iam/jump-host),然后建立一个TCP 转发到远程的机器。
- l login_name 指定登录到远程机器的用户名
- p 指定连接到远程机器的端口
- q 安静模式
- V 显示版本号
- v冗余模式
- X 执行X11转发


一个小历史

SSH在1990s取到了众多老旧的Unix和Linux命令行和协议。包括telnet,rlogin和rsh。

SSH运行在TCP/IP 22号端口。SSH诞生于1995年春天,这是一个telnet和FTP被大肆使用的年代。关于SSH如果得到22号端口,有一个很有趣的故事: how SSH got port 22

而关于SSH安全协议的由来,这里有一个作者本人的Youtube视频:https://youtu.be/OHBdKM7s5V4


参考:https://www.ssh.com/ssh/command/

相关文章
|
6月前
|
Linux 网络安全
Linux命令(124)之ssh
Linux命令(124)之ssh
75 2
|
6月前
|
安全 Shell Linux
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
198 0
|
5月前
|
安全 Linux Shell
Linux中SSH命令介绍
Linux中SSH命令介绍
133 2
|
6月前
|
Ubuntu Shell Linux
使用sshpass工具通过SSH执行远程命令
`sshpass`是一个用于在脚本中自动输入SSH密码的工具 **在Debian/Ubuntu上安装sshpass:** ```bash sudo apt-get install sshpass ``` **在CentOS/RHEL上安装sshpass:** ```bash sudo yum install sshpass ``` **在Fedora上安装sshpass:** ```bash sudo dnf install sshpass ``` 安装完成后,你可以使用`sshpass`命令通过SSH执行远程命令。以下是一个示例: ```bash sshpass -p 'yo
654 0
|
3月前
|
安全 Linux Shell
SSH 命令完整实用指南 | Linux SSH 服务
【8月更文挑战第20天】
404 0
|
3月前
|
jenkins 网络安全 持续交付
Jenkins Pipeline 流水线 - 上传文件 Publish over SSH 执行命令
Jenkins Pipeline 流水线 - 上传文件 Publish over SSH 执行命令
207 0
|
6月前
|
安全 网络协议 Linux
Linux ssh 命令详解
Linux ssh 命令详解
193 0
|
6月前
|
存储 Linux 网络安全
在 Linux 中通过 SSH 执行远程命令时,无法自动加载环境变量(已解决)
SSH远程执行命令时遇到“命令未找到”问题,原因是Linux登录方式不同导致环境变量加载差异。解决方案:将环境变量写入`/etc/profile.d/`下的文件,或手动在命令前加载环境变量,如`source /etc/profile`。
517 0
|
6月前
|
资源调度 前端开发 JavaScript
够啦!前端Yarn配置和命令
够啦!前端Yarn配置和命令
168 0
|
6月前
|
监控 前端开发 安全
【专栏】介绍了前端工程师如何掌握SSH命令,包括SSH协议的基础知识、命令行操作如登录、文件传输、目录管理和进程管理
【4月更文挑战第29天】本文介绍了前端工程师如何掌握SSH命令,包括SSH协议的基础知识、命令行操作如登录、文件传输、目录管理和进程管理。在前端开发中,SSH用于部署项目、协同后端开发及服务器监控。文章还强调了使用密钥认证、配置别名及安全注意事项,并提醒开发者面对问题时如何解决。学习和熟练运用SSH是前端工程师适应复杂项目需求的关键。
120 0