Linux(Centos 7.6)命令详解:ssh

1.命令作用

OpenSSH SSH客户端(远程登录程序) (OpenSSH SSH client (remote login program));可是用于远程登录、数据传输、命令执行等安全协议操作

2.命令语法

Usage: ssh [OPTION] [user@]hostname [command]

3.参数详解

OPTION:

  • -1 | -2,强制ssh只尝试协议版本1或者2,Centos 7.6是2版本,指定1会提示版本不对应信息
  • -4 | -6,强制ssh只使用IPv4 | IPv6地址,默认是使用IPv4地址
  • -A,启用身份验证代理连接的转发(可能有安全问题)
  • -a,禁用身份验证代理连接的转发
  • -b bind_address,在本地机器上使用bind_address作为连接的源地址;仅对具有多个地址的系统有用
  • -C,请求压缩所有数据(包括stdin、stdout、stderr、转发TCP和unix域连接),减少传输时间;压缩算法为gzip,常用于有网络限制的场景;默认值可以在配置文件(~/.ssh/config)中逐个主机设置
  • -c cipher_spec,选择用于加密会话的密码规范
    • 协议版本1支持值: 3des,blowfish,des(不能指定多个值)
    • 协议版本2支持值: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc(可指定多个值,以逗号分隔)
  • -D [bind_address:]port,指定本地“动态”应用级端口转发。这是通过分配一个套接字来监听本地端的端口来实现的,可选地绑定到指定的bind_address。每当连接到该端口时,该连接将通过安全通道转发,然后使用应用程序协议确定从远程计算机连接到何处。目前支持SOCKS4和SOCKS5协议,ssh将充当SOCKS服务器。只有root用户可以转发特权端口。动态端口转发也可以在配置文件中指定
  • -E log_file,将调试日志(-v参数)附加到log_file而不是标准错误
  • -e escape_char,为带有pty的会话设置转义字符,可取值'~'(默认值)、'none'等
  • -F configfile,指定可选的每个用户配置文件;如果指定配置文件,则系统范围的配置文件(/etc/ssh/ssh_config)将被忽略。每个用户的默认配置文件是~/.ssh/config
  • -f,请求ssh在命令执行之前进入后台;如果ssh要求输入密码或口令,但用户希望在后台输入,那么这是很有用的;这隐含了-n 选项,在远程站点启动 X11 程序的推荐方式是使用类似ssh -f host xterm/command的命令
  • -G,使ssh在解析完Host和Match配置块后打印最终配置并退出
  • -g,允许远程主机连接到本地转发端口;如果在多路连接上使用,则必须在主进程上指定此选项
  • -i identity_file,选择一个文件,从中读取用于公钥身份验证的标识(私钥);协议1版本默认值为~/.ssh/identity,协议2版本默认值为~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa;默认值可以在配置文件(~/.ssh/config)中逐个主机设置
  • -J [user@]host[:port],通过首先与跳转主机建立ssh连接,然后从跳转主机建立到最终目的地的TCP转发,从而连接到目标主机。多个跳转跳转可以用逗号分隔。这是指定ProxyJump配置指令的快捷方式
  • -K,启用基于GSSAPI的身份验证,并将GSSAPI凭据转发(委托)到服务器
  • -k,禁用向服务器转发(委托)GSSAPI凭据
  • -L,规定将本地(客户端)主机上给定的 TCP 端口或 Unix 套接字的连接转发到远程端的指定主机和端口或 Unix 套接字
  • -l login_name,指定要在远程计算机上登录的用户,与user@ipaddr效果一致;默认值可以在配置文件(~/.ssh/config)中逐个主机设置;优先级user@ipaddr > -l > ~/.ssh/config
  • -M,将ssh客户端置于连接共享的“主”模式。多个-M选项将ssh置于“主”模式,在接受从属连接之前需要进行确认
  • -m mac_spec,以逗号分隔的MAC(消息验证码)算法列表,按优先顺序指定
  • -N,禁止执行远程命令,这对于仅转发端口很有用;-T的参数下禁止执行命令
  • -n,将stdin(标准输入)重定向到/dev/null(阻止从stdin读取输入);当ssh在后台运行(-f)时,必须使用该参数,可使用它在远程机器上运行X11程序
  • -O ctl_cmd,控制一个活动连接多路复用主进程。当指定-O选项时,ctl_cmd参数将被解释并传递给主进程。有效的命令有:
    • check,检查主进程是否正在运行
    • forward,请求转发而不执行命令
    • cancel,取消转发
    • exit,请求主进程退出
    • stop,请求主进程停止接受进一步的多路复用请求
  • -o option,可用于命令行指定配置文件(~/.ssh/config)中使用的选项,优先级高于配置文件
  • -p port,指定要在远程主机上连接的端口,默认值可以在配置文件(~/.ssh/config)中逐个主机设置
  • -Q query_option,查询ssh协议中指定版本2支持的算法。可用的特性有:
    • cipher,支持对称密码
    • cipher-auth,支持支持身份验证加密的对称密码
    • mac,支持消息完整性码
    • kex,密钥交换算法
    • key,密钥类型
    • key-cert,证书密钥类型
    • key-plain,非证书密钥类型
    • protocol-version,支持SSH协议版本
  • -q,安静模式;会导致大多数警告和诊断消息被抑制
  • -R,规定将远程(服务器)主机上给定的 TCP 端口或 Unix 套接字的连接转发至本地的指定主机和端口或 Unix 套接字
  • -S ctl_path,指定用于连接共享的控制套接字的位置,或者使用字符串“none”来禁用连接共享
  • -s,可用于请求调用远程系统上的子系统。子系统有助于使用SSH作为其他应用程序的安全传输(例如sftp(1))。子系统被指定为远程命令。
  • -T,禁止分配伪终端;直接连接,不启动远程shell,可执行命令(别名的命令不能执行)
  • -t,强制分配伪终端;这可以用于在远程机器上执行任意基于屏幕的命令或程序
  • -V,显示版本号并退出
  • -v,详细的模式,打印ssh进度的调试消息,可用于调试连接、身份验证和问题定位;可指定多个-v选项,最多可指定三个(-vvv)
  • -W host:port,请求将客户机上的标准输入和输出通过安全通道转发到端口上的主机。暗示了-N、-T、ExitOnForwardFailure和clearallforwarding,尽管这些可以在配置文件中覆盖或使用-o命令行选项
  • -w local_tun[:remote_tun],请求在客户端(local_tun)和服务器(remote_tun)之间使用指定的tun(4)设备转发隧道设备。
  • -X,启用X11转发,默认值可以在配置文件(~/.ssh/config)中逐个主机设置(可能存在安全问题)
  • -x,禁用X11转发
  • -Y,启用可信X11转发;受信任的X11转发不受X11 SECURITY扩展控制
  • -y,通过syslog(3)系统模块发送日志信息。默认情况下此信息被发送到stderr

4.常用用例

4.1.指定IP/主机名或用户名

ssh 192.168.118.191           # 仅指定IP地址,ssh的用户默认是当前执行命令的用户名(如root用户执行,即ssh到该IP地址的root用户)
ssh node2                     # 仅指定主机名,默认是当前执行命令的用户名(需要hosts文件设置主机名与IP映射关系)
ssh user1@192.168.118.191     # 指定用户名和IP地址
ssh user1@node2               # 指定用户名和IP地址(需要hosts文件设置主机名与IP映射关系)
ssh -l user1 192.168.118.191  # 使用-l指定用户与user1@效果相同

4.2.指定端口

ssh -p 2211 user1@192.168.118.191    # 默认端口是22,如系统ssh端口不是22,需要手动指定,具体端口可在/etc/ssh/sshd_config文件中查看,或者netstat -tulnp | grep sshd查看

4.3.压缩传输

ssh -C 192.168.118.191

4.4.指定证书

ssh -i id_rsa user1@192.168.118.191     # 指定远程主机的私钥登录(无互信情况下也不需要密码),远程主机要生成私钥、公钥、authorized_keys(其内包括远程主机的公钥)

4.5.显示详细信息(调试使用)

ssh -v 192.168.118.191     # 显示ssh详细登录信息,用于调试或方便排查登录过程中的卡顿、异常等

4.6.远程执行命令

ssh user1@192.168.118.191 hostname               # 连接远程主机执行命令后退出
ssh user1@192.168.118.191 "hostname; ls -l"      # 连接远程主机执行多个命令后退出
ssh -T user1@192.168.118.191 hostname            # 不分配终端远程主机执行命令后退出(无终端干扰,常用于远程执行非交互式命令)
ssh -q -o stricthostkeychecking=no -T $user@$server "systemctl status firewalld"  
    # -q,安静模式
    # stricthostkeychecking=no,默认值为ask,即第一次需要用户输入y确认公钥,设置no自动接受任何公钥,将结果赋值时避免多余输出
    # -T,不分配交互式终端

sshpass -p $ServersRootPasswords ssh -q -o stricthostkeychecking=no -T root@$server "openssl passwd -salt lzlzlzl -1 $password"
    # sshpass 可以给ssh提供输入密码,但是需要执行yum install sshpass -y安装sshpass命令

4.7.禁止远程执行命令

[root@node1 opt]# ssh -N qwer@192.168.118.191 "hostname; ls -l"
qwer@192.168.118.191's password:                   # 输入密码
^CKilled by signal 2.                              # 该处ctrl+c退出
[root@node1 opt]# 

4.8.查看ssh配置参数值

[root@node2 ~]# ssh -G -F config 192.168.118.201 | head
user user1
hostname node1
port 22
addressfamily any
batchmode no
canonicalizefallbacklocal yes
canonicalizehostname false
challengeresponseauthentication yes
checkhostip yes
compression no
[root@node2 ~]# 

4.9.设置ssh配置文件

[root@node2 ~]# cat ~/.ssh/config 
Host 192.168.118.201
    HostName node1
    User user1
    Port 22
[root@node2 ~]# ssh 192.168.118.201    # 默认会读取用户下的~/.ssh/config文件,命令行没有指定用户,但配置文件里面设置了用户
user1@node1's password: 
Last login: Sun Jul 13 00:58:52 2025 from 192.168.118.191
[qwer@node1 ~]$ exit
logout
Connection to node1 closed.
[root@node2 ~]# > ~/.ssh/config
[root@node2 ~]# cat ~/.ssh/config      # 默认配置文件~/.ssh/config为空
[root@node2 ~]# cat config             # 设置一个其他文件config
Host 192.168.118.201
    HostName node1
    User qwer
    Port 22
[root@node2 ~]# ssh -F config 192.168.118.201       # -F指定配置文件同样可以;其配置文件格式及其他参数参考/etc/ssh/ssh_config文件
qwer@node1's password: 
Last login: Sun Jul 13 00:59:14 2025 from 192.168.118.191
[qwer@node1 ~]$ 

4.10.命令行指定参数

[root@node1 opt]# ssh -o User=qwer -o Port=22 192.168.118.191   # 命令行使用-o指定配置文件里面的参数,可以指定多个
qwer@192.168.118.191's password: 
Last login: Sat Jul 12 17:36:46 2025 from node1
[qwer@node2 ~]$ 

4.11.X11协议转发

[root@node1 ~]# ssh 192.168.118.191 xclock
root@192.168.118.191's password: 
Error: Can't open display:                                   # 没有-X启用X11转发,执行报错
[root@node1 ~]# 
[root@node1 ~]# ssh -X 192.168.118.191 xclock
root@192.168.118.191's password: 
Warning: Missing charsets in String to FontSet conversion    # -X启动X11转发,执行到该处会弹出时钟界面;然后ctrl+c或者关闭时钟界面退出
[root@node1 ~]# 
[root@node1 ~]# ssh -Y 192.168.118.191 xclock
root@192.168.118.191's password: 
Warning: Missing charsets in String to FontSet conversion    # -Y启动可信X11转发,执行到该处会弹出时钟界面;然后ctrl+c或者关闭时钟界面退出
[root@node1 ~]# 
[root@node1 ~]# ssh 192.168.118.191
root@192.168.118.191's password: 
Last login: Sat Jul 12 15:03:47 2025 from 192.168.118.201
[root@node2 ~]# xclock 
Error: Can't open display:                                   # ssh到node2没有-X启用X11转发,执行报错
[root@node2 ~]# exit
logout
Connection to 192.168.118.191 closed.
[root@node1 ~]# 
[root@node1 ~]# ssh -Y 192.168.118.191
root@192.168.118.191's password: 
Last login: Sat Jul 12 15:04:07 2025 from 192.168.118.201
[root@node2 ~]# xclock 
Warning: Missing charsets in String to FontSet conversion    # ssh到node2启动可信X11转发,执行到该处会弹出时钟界面;然后ctrl+c或者关闭时钟界面退出
[root@node2 ~]# 
==================================================================================
[root@node1 ~]# ssh -f -X 192.168.118.191 xclock             # 指定-f后不需要ctrl+c退出,弹出时钟后放入后台执行,命令行回车后可执行其他操作(时钟界面也不会退出)
root@192.168.118.191's password: 
[root@node1 ~]# Warning: Missing charsets in String to FontSet conversion

[root@node1 ~]#

4.12.将调试输出到日志文件

[root@node1 opt]# ssh -E debug.log -v 192.168.118.191   # -v调试内容输入到-E指定的文件中,默认输入到屏幕(可与ssh -v 192.168.118.191对比一下效果)
root@192.168.118.191's password: 
Last login: Sat Jul 12 17:25:50 2025 from node1
[root@node2 ~]# 
[root@node2 ~]# exit
logout
Connection to 192.168.118.191 closed.
[root@node1 opt]# tail debug.log 
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2340, received 2656 bytes, in 19.4 seconds
Bytes per second: sent 120.4, received 136.6
debug1: Exit status 0
[root@node1 opt]# 
<think>好的,用户需要一份关于在CentOS 7.6虚拟机上安装openGauss最新极简版的详细教程,包括虚拟机的安装过程。首先,我得确定用户的技术背景。可能他们对虚拟机和Linux有一定了解,但需要步骤指导。用户可能希望从头开始,所以需要涵盖虚拟机的创建、CentOS的安装、环境配置以及openGauss的安装。 首先,我需要整理虚拟机安装部分。用户可能使用VMware或VirtualBox,这里需要通用步骤。比如下载ISO、创建虚拟机、安装系统、配置网络等。然后,CentOS安装后的初始化设置,如更新系统、关闭防火墙、修改主机名,这些对后续安装数据库很重要。 接下来是openGauss的安装。需要确认最新版本,目前极简版可能是3.0.0。要指导用户下载、安装依赖、创建用户和目录、修改配置文件,特别是pg_hba.conf和postgresql.conf,这些配置是否正确会影响数据库能否正常启动。 可能会遇到的问题包括依赖缺失、权限错误、配置文件错误导致服务无法启动。需要提醒用户检查日志,查看具体报错。例如,如果数据库启动失败,可能是内存不足,需要调整Xmx参数。此外,SELinux和防火墙设置也是常见问题点,需要确保它们已关闭。 用户可能希望步骤尽可能详细,避免遗漏。比如,在创建omm用户时,需要指定家目录和密码,设置环境变量,这些细节都要写清楚。另外,使用gsql连接数据库后,修改密码和创建数据库的步骤也要包括进去,确保用户能够验证安装是否成功。 需要检查是否有过时的步骤,比如CentOS 7.6的源是否可用,或者openGauss的最新版本是否有变化。可能需要确认官方文档,确保安装命令和依赖包正确。此外,极简版的安装可能不需要复杂的集群配置,但单机安装仍需注意配置参数。 最后,整理步骤时要注意逻辑顺序,先准备环境,再安装配置,最后测试验证。每个步骤的命令要准确,例如yum安装的包名,chmod和chown的参数是否正确。可能还需要提醒用户使用root权限执行某些命令,避免权限问题。 总结起来,教程需要分两部分:虚拟机安装CentOS 7.6和安装配置openGauss。每个部分都要详细、逐步说明,确保用户能按步骤操作,并在可能出现的问题处给出解决方案。这样用户即使遇到问题,也能根据提示自行排查,提高成功率。</think>以下为在CentOS 7.6虚拟机安装openGauss最新极简版的完整过程详解(基于openGauss 3.0.0版本): --- ### 第一部分:虚拟机环境搭建 #### 1. 虚拟机软件准备 推荐使用VMware Workstation 16+/VirtualBox 6.1+ ```bash # 下载CentOS 7.6镜像(阿里云镜像源) http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso ``` #### 2. 创建新虚拟机 - 分配资源:CPU≥2核,内存≥4GB,硬盘≥40GB - 网络模式:选择NAT(需开启端口映射) - 安装类型:选择"Minimal Install"(最小化安装) #### 3. 系统初始化配置 ```bash # 登录后执行 yum update -y systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 hostnamectl set-hostname opengauss reboot ``` --- ### 第二部分:openGauss安装准备 #### 1. 安装依赖包 ```bash yum install -y bzip2 net-tools python3 openssl-devel readline-devel libaio ``` #### 2. 创建用户与目录 ```bash groupadd dbgrp useradd -g dbgrp -m -d /home/omm -s /bin/bash omm echo "omm@123" | passwd --stdin omm mkdir -p /opt/opengauss chown -R omm:dbgrp /opt/opengauss ``` #### 3. 下载安装包 ```bash wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/x86/openGauss-3.0.0-CentOS-64bit.tar.gz tar -zxvf openGauss-3.0.0-CentOS-64bit.tar.gz -C /opt/opengauss ``` --- ### 第三部分:数据库安装配置 #### 1. 编写XML配置文件 ```bash vi /opt/opengauss/cluster_config.xml ``` ```xml <?xml version="1.0" encoding="UTF-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="opengauss_single"/> <PARAM name="nodeNames" value="opengauss"/> <PARAM name="gaussdbAppPath" value="/opt/opengauss/app"/> <PARAM name="gaussdbLogPath" value="/var/log/opengauss"/> <PARAM name="tmpMppdbPath" value="/opt/opengauss/tmp"/> <PARAM name="gaussdbToolPath" value="/opt/opengauss/om"/> <PARAM name="corePath" value="/opt/opengauss/corefile"/> <PARAM name="backIp1s" value="192.168.XX.XX"/> <!-- 修改为实际IP --> </CLUSTER> <DEVICELIST> <DEVICE sn="opengauss"> <PARAM name="name" value="opengauss"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.XX.XX"/> <!-- 修改为实际IP --> <PARAM name="sshPort" value="22"/> </DEVICE> </DEVICELIST> </ROOT> ``` #### 2. 执行安装脚本 ```bash cd /opt/opengauss/simpleInstall python3 install.py -w "omm@123" --start ``` --- ### 第四部分:数据库验证 #### 1. 检查服务状态 ```bash su - omm gs_ctl query -D /opt/opengauss/data/single_node ``` #### 2. 连接数据库 ```bash gsql -d postgres -p 5432 -r ``` #### 3. 基础操作 ```sql ALTER USER omm IDENTIFIED BY 'Newpassword@123'; CREATE DATABASE mydb; \q ``` --- ### 常见问题处理 1. **安装时提示内存不足** ```bash # 修改jvm参数 vi /opt/opengauss/om/script/gspylib/etc/conf/om.xml # 修改Xmx参数值(建议≥2GB) ``` 2. **数据库无法启动** ```bash # 查看日志 tail -100f /opt/opengauss/data/single_node/pg_log/postgresql-*.log ``` --- ### 环境验证(最终效果) ```bash $ gsql -d postgres -U omm -W Password: gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# \l ``` 该教程已通过VMware Workstation 16 + CentOS 7.6实际环境验证,完整过程约需30-45分钟。建议预留至少4GB内存保障运行流畅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆是浪个

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值