使用 SSH 以编程方式重启服务器

使用 SSH 以编程方式重启服务器

先介绍一下这个问题的背景,我们办公室里有多个 unix 机器。它们上面运行着 weblogic 实例。此外,我们只能通过 SSH 访问 unix 机器。
所以,问题是有没有办法以编程方式执行 unix 命令,而无需手动登录 unix 服务器?我知道 jsch 用于 java ssh 连接。我只是在寻找一种更好的方法。

sshd_config 详细信息
这些仅包括差异。其余的与评论中提到的一样。

    AllowTcpForwarding no
Banner /etc/issue
Ciphers aes128-ctr,aes128-cbc,arcfour,3des-cbc,blowfish-cbc
ClientAliveCountMax 0
ClientAliveInterval 900
HostBasedAuthentication no
HostKey /etc/ssh/ss_hhost_rsa_key
LoginGraceTime 120
MaxAuthTries    3
PrintMotd yes
PubkeyAuthentication yes
RSAAuthentication yes
Subsystem       sftp    /usr/lib/ssh/sftp-server

答案1

ssh keygen 一点也不难

如果您具有登录权限,则通常您拥有所需的所有权限

在 windows 端使用 PuttyGen.exe(如果是 windows 的话),否则 ssh-keygen 也可以


将公钥(ssh 格式)附加到 authorized_keys 中(你的主文件夹,因此您有权限)。

唯一行不通的原因是

  • 使用(糟糕的)旧版 sshd
  • 当 sshd_config 明确禁止公钥认证时 - 在这种情况下...好吧,你必须与管理员交谈(沟通总是比技术技巧更难:))

信息

在我的 OpenSolaris 服务器上,我有以下 sshd_config

sehe@osol147:/etc/ssh$ grep -v ^# sshd_config  | sort -u

GatewayPorts no
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_rsa_key
IgnoreRhosts yes
KeepAlive yes
KeyRegenerationInterval 3600
ListenAddress ::
LoginGraceTime 600
LogLevel info
MaxAuthTries    6
MaxAuthTriesLog 3
PAMAuthenticationViaKBDInt yes
PasswordAuthentication yes
PermitEmptyPasswords no
PermitRootLogin yes
Port 22
PrintMotd no
Protocol 2
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
ServerKeyBits 768
StrictModes yes
Subsystem       sftp    internal-sftp
SyslogFacility auth
X11DisplayOffset 10
X11Forwarding yes
X11UseLocalhost yes

答案2

使用密钥认证可以无需密码即可进行 ssh。查看如何ssh-keygen在客户端生成密钥,并将ssh-copy-id server其复制到服务器。ssh server然后就可以无密码工作了。

然后通过编程来运行就很简单了ssh server command

答案3

查看出。有很多方法可以使用 python 进行 ssh。

相关内容