在Linux系统中,SSH(Secure Shell)是一种用于远程登录和管理服务器的协议,通过SSH,我们可以在本地计算机上执行命令,并将结果返回到本地计算机,在Linux SysOps(系统管理员)的日常工作中,SSH是最常用的工具之一,为了提高工作效率,我们需要掌握一些精简的SSH操作命令,本文将介绍一些常用的SSH精简操作命令及其技巧。
1、SSH基本连接
要使用SSH连接到远程服务器,我们需要知道服务器的IP地址或域名、用户名和端口号,默认情况下,SSH使用22端口,以下是连接到远程服务器的基本命令:
ssh 用户名@服务器地址 p 端口号
ssh root@example.com p 22
2、SSH密钥登录
为了提高安全性,我们通常会为每个用户生成一对公钥和私钥,公钥存储在远程服务器上,私钥存储在本地计算机上,这样,我们就可以使用私钥进行身份验证,而无需输入密码,以下是使用SSH密钥登录的命令:
ssh i 私钥文件路径 用户名@服务器地址 p 端口号
ssh i ~/.ssh/id_rsa root@example.com p 22
3、SSH隧道
SSH隧道是一种将一个网络连接封装在另一个网络连接中的方法,这对于在不安全的网络上传输敏感数据非常有用,以下是创建SSH隧道的命令:
ssh D 本地端口号 C 用户名@服务器地址 p 端口号
ssh D 8080 C root@example.com p 22
这将创建一个SSH隧道,将所有通过本地计算机的8080端口的流量转发到远程服务器。
4、SSH并行执行命令
有时,我们需要在多个远程服务器上执行相同的命令,为了提高效率,我们可以使用ssh
命令的t
选项来并行执行命令,以下是并行执行命令的命令:
ssh t 用户名@服务器地址 '命令' 用户名@服务器地址 '命令' ...
ssh t root@server1 'uname a' root@server2 'uname a' root@server3 'uname a'
这将在server1、server2和server3上并行执行uname a
命令,显示系统的详细信息。
5、SSH会话管理
在使用SSH时,我们可能需要同时与多个远程服务器进行交互,为了方便管理这些会话,我们可以使用screen
或tmux
工具,以下是使用screen
创建新会话的命令:
screen S 会话名称 ssh 用户名@服务器地址 p 端口号
screen S server1_session root@server1 p 22
这将创建一个名为server1_session
的新会话,并在其中连接到server1,要切换到其他会话,可以使用以下命令:
screen r 会话名称
screen r server1_session
6、SSH配置文件设置
为了方便地使用SSH,我们可以将常用的参数(如用户名、服务器地址、端口号等)保存在一个配置文件中,以下是一个简单的SSH配置文件示例:
~/.ssh/config Host server1 *.example.com server1.example.com 192.168.1.100 user1 user1password user1keyfile user1port 2222 user1opts "o ConnectTimeout=5" "o ServerAliveInterval=60" "o ServerAliveCountMax=3" user1cmd "ls" user1prompt "%m:%H %d> " user1env "PATH=/usr/bin:/usr/local/bin" user1workdir /home/user1/workdir user1subsystem shell user1forcecommand exit user1logoutcmd exit user1logincmd /bin/bash login user1setoption auto_title true user1setoption auto_motd true user1setoption auto_update true user1setoption auto_check_host_keys false user1setoption auto_cleanup false user1setoption auto_rehash false user1setoption auto_syntax false user1setoption auto_complete false user1setoption auto_prompt false user1setoption auto_history false user1setoption auto_cd false user1setoption auto_pushd false user1setoption auto_popd false user1setoption auto_ignoredups true user1setoption auto_ignoreempty true user1setoption auto_ignorespace true user1setoption auto_ignoretab false user1setoption auto_ignoreeof false user1setoption auto_transpose true user1setoption auto_charset utf8 user1setoption auto_crlf true user1setoption auto_listonly false user1setoption auto_colorize false user1setoption auto_remotecase false user1setoption auto_remoteutf8 false user1setoption remote_forward yes user1setoption remote_stream local nouser1verify unknown host key nouser1preferredauths password,publickeyuser1allowusers user2,user3user1denyusers *user1permitopen noneuser1permitclose noneuser1loglevel infouser1print Motd nouser1print LastLog nouser1print UserKnownHosts nouser1print HostKeyAlgorithms nouser1print HostKeyAliases nouser1print StrictHostKeyChecking nouser1print UserCert noneuser1print UserConversion noneuser1print XAuthLocation noneuser1print Subsystem noneuser1print IdentitiesOnly nouser1print Match group anyuser1print RekeyLimit offuser1print PortForwarding nouser1print AgentForwarding nouser1print XAuthPrompt nouser1print XAuthLocation noneuser1print XAuthUserFile noneuser1print XAuthTunnel nouser1print TunnelDevice anyuser1print TunnelRemote nouser1print TunnelLocal yesuser1print TunnelStatus nouser1print TunnelBearer anyuser1print TunnelServer nouser1print TunnelClient yesuser1print TunnelExitStatus nouser1print TunnelType anyuser1print TunnelDynamic yesuser1print TunnelLCPTimeout nouser1print TunnelRetry yesuser1print TunnelData yesuser1print TunnelIdleTimeout nouser1print TunnelDebug yesuser1print TunnelCookie nouser1print TunnelNoTLSVerify yesuser1print TunnelRemoteCommand nouser1print TunnelRemoteCommandFallback nouser2 *.example.com server2.example.com 77.77.77.77 user2password user2keyfile user2port 2223 user2cmd "ls" user2prompt "%m:%H %d> " user2env "PATH=/usr/bin:/usr/local/bin" user2workdir /home/user2/workdir user2subsystem shell user2forcecommand exit user2logoutcmd exit user2logincmd /bin/bash login user2setoption auto_title true user2setoption auto_motd true user2setoption auto_update true user2setoption auto_check_host_keys false user2setoption auto_cleanup false user2setoption auto_rehash false user2setoption auto_syntax false user2setoption auto_complete false user2setoption auto_prompt false user2setoption auto_history false user2setoption auto_cd false user2setoption auto_pushd false user2setoption auto_popd false user2setoption auto_ignoredups true user2setoption auto_ignoreempty true user2setoption auto_ignorespace true user2setoption auto_ignoretab false user2setoption auto_ignoreeof false user2setoption auto_transpose true user2setoption auto_charset utf8 user2setoption auto_crlf true user2setoption auto_listonly false user2setoption auto_colorize false user2setoption auto_remotecase false user2setoption auto_remoteutf8 false user2setoption remote_forward yes
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/489263.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复