① Windows中: ‘ssh‘ 不是内部或外部命令 解决办法
1. 检查是否已安装OpenSSH
-> 1.1 使用win+R快捷键,输入services.msc,点击确定
-> 1.2 随机选择一个服务,然后搜索o
-> 1.3 如果存在这两个服务,则跳过2,否则查看2
2. Windows下安装OpenSSH的方法
-> 2.1 设置 -> 应用 -> 应用和功能 -> 管理可选功能
-> 2.2 选择添加功能,选择OpenSSH客户端和服务端进行下载
3. 添加环境变量
-> 3.1 打开: 此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量 -> 新建
-> 3.2 新建环境变量,填写以下路径和名称
SSH_PATH
C:\Windows\System32\OpenSSH
-> 3.3 添加path环境变量
C:\Windows\System32\OpenSSH
%SYSTEMROOT%\System32\OpenSSH\
-> 3.4 保存,然后重启一个终端进行测试
--->3.4.1 如出现下图则为成功
C:\Users\DELL>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
C:\Users\DELL>
-> 3.5 链接本地小服务器时,发现时间不正确
--->3.5.1 解决方案:更新系统时间
ntpdate -u pool.ntp.org
---> 3.5.2 效果:
补充:Windows中SSH的作用
Windows的SSH功能主要用于远程访问和管理其他计算机、服务器或虚拟机等设备,用户可以通过安全的加密通道连接到目标设备并执行命令、访问文件等操作。与其他远程访问协议相比,SSH具有更高的安全性和可靠性,可以在本地计算机与目标设备之间建立一条加密的、安全的连接,保护用户的敏感信息和数据。
OpenSSH客户端或其他第三方SSH连接到其他计算机或服务器,并执行以下任务:
远程执行命令:可以通过SSH连接到目标设备并在终端中输入命令。
上传和下载文件:可以通过SCP或SFTP协议上传或下载文件。
配置和管理服务器:可以通过SSH访问远程服务器,并进行配置、管理、监控等。
需要注意的是,SSH功能需要在目标设备上启用SSH服务,并配置相应的用户和权限。如果您要连接到由他人管理的设备,需要获得相应的授权和合法许可。
② ssh连接如何输入命令行
通过 ssh 建立与远程服务器连接后,可通过以下步骤输入命令行:1. 打开终端窗口; 2. 输入 ssh 命令:ssh username@server_address; 3. 输入密码或验证密钥; 4. 输入命令; 5. 输入 exit 退出命令行。
SSH 连接:输入命令行的步骤
通过 SSH(安全外壳)建立与远程服务器的连接后,您可以执行命令行操作。以下是输入命令行的步骤:
1. 打开终端窗口
在本地计算机上,打开终端窗口或命令提示符。常见的终端应用程序包括 Terminal(macOS)、cmd(Windows)和 Bash(Linux)。
2. 键入 SSH 命令
输入以下命令并在末尾输入远程服务器的 IP 地址或主机名:
ssh username@server_address
其中:
username 是您在远程服务器上的用户名server_address 是远程服务器的 IP 地址或主机名
按 Enter 键。
3. 输入密码或验证密钥
如果使用密码验证,将提示您输入密码。如果您使用 SSH 密钥进行身份验证,您需要输入密钥的密码短语(如果有)。
4. 输入命令
成功连接后,您将看到类似于以下内容的提示:
username@server-address:~gt;
此提示表明您已连接到远程服务器并可以输入命令。要执行命令,只需键入命令名称及其任何参数,然后按 Enter 键。
5. 退出命令行
要退出远程服务器的命令行,请输入以下命令:
exit
按 Enter 键关闭连接。
③ cmd命令下能否使用什么命令通过ssh连接到远程lin呢
1、Windows提供了一些远程管理功能像使用WindowsPowerShell,ServerManager.exe,或一个telnet服务器,但它并没有提供原生的SSH(安全外壳)或SecureFTP访问。
2、不过,好消息是它是相当容易成立SSH和安全FTP(SFTP)服务器,让您可以安全地访问命令提示符和文件的电脑或远程服务器示例使用的情况下,包括故障排除维修或转移/共享文件,当你走出公室你甚至可以决定设置它做SSH隧道以确保你的Wi-Fi流量使用热点时。
3、虽然有很多SSH和SFTP服务器可供选择,在这里我们将讨论freeSSHd以下freeSSH中是一个SSH和Telnet服务器,支持普通的shell或命令行SSH访问,基于SSH的SFTP访问(使用命令行或GUI客户端)基于SSH隧道(VPN一样的功能)。
4、freeSSH中很容易通过一个典型的Windows安装程序安装做虽然确保创建上面的安装结束时,因为它们所需的加密的私钥。
5、配置服务器一旦你打开freeSSHd以下,你会发现一个系统托盘图标你可以单击“打开服务器设置如果你没有在安装过程中创建的私钥SSH选项卡并单击“新建”的关键()。
④ 怎么通过ssh在远程Host执行交互命令
ssh执行远程操作
命令格式
复制代码 代码如下:
ssh -p $port $user@$p 'cmd'
$port : ssh连接端口号
$user: ssh连接用户名
$ip:ssh连接的ip地址
cmd:远程服务器需要执行的操作
准备工作
基于公私钥认证或者用户名密码认证能确保登录到远程local2服务器(有点基本运维知识的人做这个事情都不是问题)
cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑)
不足
这个命令可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制:
远程服务器local2禁止root用户登录
在远程服务器脚本里转换身份用expect需要send密码,这样不够安全
ssh的-t参数
复制代码 代码如下:
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻译一下:就是可以提供一个远程服务器的虚拟tty终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全
命令格式
复制代码 代码如下:
ssh -t -p $port $user@$ip 'cmd'
示例脚本
复制代码 代码如下:
#!/bin/bash
#变量定义
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"
#本地通过ssh执行远程服务器的脚本
for ip in ${ip_array[*]}
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done
这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!