11
« kdy: 15. 09. 2022, 22:27:06 »
Ahoj,
chtěl jsem v Pythonu spouštět příkazy na vzdáleném stroji přes ssh.
Například:
#!/usr/bin/python3
import paramiko
server = "*.*.*.*.*"
port = "22"
username = "user"
password = "****"
comand = "ls"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server, port, username, password)
stdin, stdout, stderr = ssh.exec_command(comand)
lines = stdout.readlines()
print (lines)
ssh.close()
ale hned jsem narazil na problém:
Exception: key cannot be used for signing
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/paramiko/transport.py", line 2109, in run
handler(self.auth_handler, m)
File "/usr/lib/python3/dist-packages/paramiko/auth_handler.py", line 298, in _parse_service_accept
sig = self.private_key.sign_ssh_data(blob)
File "/usr/lib/python3/dist-packages/paramiko/agent.py", line 418, in sign_ssh_data
raise SSHException("key cannot be used for signing")
paramiko.ssh_exception.SSHException: key cannot be used for signing
Traceback (most recent call last):
File "ssh7.py", line 13, in <module>
ssh.connect(server, port, username, password)
File "/usr/lib/python3/dist-packages/paramiko/client.py", line 435, in connect
self._auth(
File "/usr/lib/python3/dist-packages/paramiko/client.py", line 764, in _auth
raise saved_exception
File "/usr/lib/python3/dist-packages/paramiko/client.py", line 751, in _auth
self._transport.auth_password(username, password)
File "/usr/lib/python3/dist-packages/paramiko/transport.py", line 1498, in auth_password
raise SSHException("No existing session")
paramiko.ssh_exception.SSHException: No existing session
Problém zmizí, pokud to spustím pod rootem.
Šlo by to spouštět bez roota?
Dík