Я запускал файл demo_sftp.py из демонстрационной папки в paramiko github. Я перешагнул его в PyDev и ожидал получить ошибку, потому что у меня не было ключа к серверу, к которому я пытался подключиться, но я получил заявление на печать, в котором говорится, что скрипт не может открыть файл ключа хоста, а затем он пошел вперед, и все получилось.paramiko позволяет подключиться sftp без ключа
Код фрагмента кода.
try:
host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
except IOError:
try:
# try ~/ssh/ too, because windows can't have a folder named ~/.ssh/
host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
except IOError:
print '*** Unable to open host keys file'
host_keys = {}
if host_keys.has_key(hostname):
hostkeytype = host_keys[hostname].keys()[0]
hostkey = host_keys[hostname][hostkeytype]
print 'Using host key of type %s' % hostkeytype
# now, connect and use paramiko Transport to negotiate SSH2 across the connection
try:
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password, hostkey=hostkey)
sftp = paramiko.SFTPClient.from_transport(t)
# dirlist on remote host
dirlist = sftp.listdir('.')
print "Dirlist:", dirlist
Я действительно ожидал, что он перейдет к за исключением строки t.connect, поскольку hostkey имеет значение NoneType.
Когда я открываю соединение SSH с
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect('.'.join([self.name, self.domain]),
username=self.username, password=self.password)
stdin, stdout, stderr = ssh.exec_command("ps aux | grep Xvnc | wc -l")
я должен иметь линию AutoAddPolicy() или выходит из строя. Так в чем разница? Очевидно, я просто изучаю это, но я думал, что sftp будет столь же строгим, как ssh.