IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> SSH远程登录和TCP端口转发 -> 正文阅读

[系统运维]SSH远程登录和TCP端口转发

Security Shell Protocal (SSH)是一种网络协议,旨在为不安全的网络提供安全的加密通信。SSH应用基于客户端/服务端架构,SSH客户端用于登录远程机器(SSH服务器)并在远程机器上执行命令。
最常见的SSH应用包括:

  • SSH远程登录
  • 任意TCP端口转发

1. SSH远程登录

身份验证的方式有很多,最常见的是密码验证和公钥认证。首次登录远程ssh服务器时,ssh会将机器标识保存在~/.ssh/known_hosts文件里,也就是说它会保存访问过的每个主机的信息。

1.1 密码验证

如果没有配置任何身份验证方式,ssh会提示你输入密码。

$ ssh username@ip
username@ip‘s password:

SSH服务默认端口是22,如果ssh服务不是在默认端口启动的,则在登录时需要通过-p指定端口:

$ ssh -p 1234 username@ip

如果主机标识发生改变,ssh会发出告警并且禁用密码验证方式,以防止服务器欺骗或中间人攻击,否则这些攻击可以规避加密。

1.2 公钥认证

公钥认证基于公钥密码学,密码系统的加密和解密使用不同的密钥。使用公钥认证可以避免每次登录时输入密码,你要在客户机上生成公-私密钥对,并把公钥复制到服务器上,之后你就可以方便地登录远程机器。

1.2.1 生成密钥对

公钥协议和算法有很多,这里我们使用RSA算法,在客户机上输入命令:

$ ssh-keygen -t rsa

该命令会生成~/.ssh目录,并在目录下生成~/.ssh/id_rsa~/.ssh/id_rsa.pub文件分别保存私钥和公钥。

1.2.2 复制公钥到服务器

服务器把客户机公钥保存在~/.ssh/authorized_keys文件内,有两种方式拷贝公钥:

  1. 客户机使用ssh-copy-id命令:
$ ssh-copy-id remote_username@ip
  1. 直接将客户机的id_rsa.pub内容复制到服务机的~/.ssh/authorized_keys文件末尾:
(client) $ cat ~/.ssh/id_rsa.pub
(server) $ vim ~/.ssh/authorized_keys

1.2.3 远程登录

现在你可以像密码验证的命令那样登录远程服务器,但是不再需要输入密码。

为了简化这个命令,还可以创建~/.ssh/config文件并且添加Host:

Host wechar
  HostName <remote_ip>
  User wechar
  IdentityFile ~/.ssh/id_rsa

然后你可以这样登录:

$ ssh wechar

更进一步,如果你必须通过**跳板机(jump server)**访问安全隔离的空间内的设备,你可以这样配置:

Host jump
  HostName <jump_ip>
  User username
  IdentityFile ~/.ssh/id_rsa

Host dev01 # must access through jump server, access dev01 as username
  HostName <dev01_ip>
  ProxyJump jump
  ProxyCommand  sudo ssh -W %h:%p jump

Host dev02 # access dev02 as another_user
  HostName <dev02_ip>
  IdentityFile ~/.ssh/id_rsa
  User another_user
  ProxyCommand ssh -W %h:%p jump

2. TCP转发

可以通过以下选项指定任意TCP连接在安全通道(channel)内被转发:

-L [bind_address:]port:target_host:target_hostport

这将分配一个socket来监听目标socket,一旦连接到本地端口,连接就会通过安全通道转发。

举个例子,我们要通过跳板机jump转发10.128.1.1:4990端口到本地端口5005

$ ssh -f -N -L 5005:10.128.1.1:4990 jump
  • -f: ssh以守护进程方式启动
  • -N: 不执行远程命令,只用于端口转发

TCP转发有很多应用场景。

2.1 JVM远程调试

我们可以用TCP转发为远程服务器上的java应用进行调试,步骤如下:

  1. 通过以下选项启动java应用:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4990 -cp "Test.jar:lib/*" org.wechar.Main
  1. 在Idea上配置远程调试:

    然后你就可以像本地应用一样调试远程java应用了。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 13:31:42  更:2022-01-16 13:32:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:30:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码