Python a Paramiko bez roota

Python a Paramiko bez roota
« 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:
Kód: [Vybrat]
#!/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:
Kód: [Vybrat]
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
« Poslední změna: 15. 09. 2022, 22:48:31 od Petr Krčmář »


Re:Python a Paramiko bez roota
« Odpověď #1 kdy: 16. 09. 2022, 09:42:09 »
Nepíšeš jak jsi to zkoušel řešit (a proč to vůbec zkoušíš pod rootem) ale hned první google odkaz na chybovou hlášku vede na https://github.com/paramiko/paramiko/issues/1574

Tj když se přihlašuješ pomocí jména a hesla, zavolej
Kód: [Vybrat]
ssh.connect() s parametry
Kód: [Vybrat]
look_for_keys=False, allow_agent=False aby knihovna nezkoušela SSH klíče.