summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2024-03-06 09:41:20 -0600
committerJohn Estabrook <jestabro@vyos.io>2024-03-06 13:40:50 -0600
commit85c9450f1f6d4782f26fb30e2f41c94ed5cadcd3 (patch)
tree7cf52fb2825fa779f2e9659dfbe47ce1a5c8c1ba /python
parent8e185b78a308fd5202bb3913e228db7e45b297ba (diff)
downloadvyos-1x-85c9450f1f6d4782f26fb30e2f41c94ed5cadcd3.tar.gz
vyos-1x-85c9450f1f6d4782f26fb30e2f41c94ed5cadcd3.zip
remote: T6104: fix logic of failure case in MissingHostKeyPolicy
(cherry picked from commit 73e215dc338c8c3a6c9b3d10c952477ba00b923b)
Diffstat (limited to 'python')
-rw-r--r--python/vyos/remote.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/python/vyos/remote.py b/python/vyos/remote.py
index 830770d11..ee97ee4ad 100644
--- a/python/vyos/remote.py
+++ b/python/vyos/remote.py
@@ -43,6 +43,7 @@ from vyos.utils.io import print_error
from vyos.utils.misc import begin
from vyos.utils.process import cmd, rc_cmd
from vyos.version import get_version
+from vyos.base import Warning
CHUNK_SIZE = 8192
@@ -54,13 +55,16 @@ class InteractivePolicy(MissingHostKeyPolicy):
def missing_host_key(self, client, hostname, key):
print_error(f"Host '{hostname}' not found in known hosts.")
print_error('Fingerprint: ' + key.get_fingerprint().hex())
- if is_interactive() and ask_yes_no('Do you wish to continue?'):
- if client._host_keys_filename\
- and ask_yes_no('Do you wish to permanently add this host/key pair to known hosts?'):
- client._host_keys.add(hostname, key.get_name(), key)
- client.save_host_keys(client._host_keys_filename)
- else:
+ if not sys.stdin.isatty():
+ return
+ if not ask_yes_no('Do you wish to continue?'):
raise SSHException(f"Cannot connect to unknown host '{hostname}'.")
+ if client._host_keys_filename is None:
+ Warning('no \'known_hosts\' file; create to store keys permanently')
+ return
+ if ask_yes_no('Do you wish to permanently add this host/key pair to known_hosts file?'):
+ client._host_keys.add(hostname, key.get_name(), key)
+ client.save_host_keys(client._host_keys_filename)
class SourceAdapter(HTTPAdapter):
"""