先介绍一下这个问题的背景,我们办公室里有多个 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。