diff --git a/src/main/kotlin/app/termora/SFTPPtyTerminalTab.kt b/src/main/kotlin/app/termora/SFTPPtyTerminalTab.kt index 6acab17..664c4ae 100644 --- a/src/main/kotlin/app/termora/SFTPPtyTerminalTab.kt +++ b/src/main/kotlin/app/termora/SFTPPtyTerminalTab.kt @@ -8,6 +8,7 @@ import org.apache.commons.io.Charsets import org.apache.commons.io.FileUtils import org.apache.commons.io.IOUtils import org.apache.commons.lang3.StringUtils +import org.apache.sshd.client.ClientBuilder import org.apache.sshd.client.SshClient import org.apache.sshd.client.session.ClientSession import org.apache.sshd.common.config.keys.writer.openssh.OpenSSHKeyPairResourceWriter @@ -83,11 +84,19 @@ class SFTPPtyTerminalTab(windowScope: WindowScope, host: Host) : PtyHostTerminal commands.add("UserKnownHostsFile=${File(Application.getBaseDataDir(), "known_hosts").absolutePath}") } - // Compression commands.add("-o") commands.add("Compression=yes") + // HostKeyAlgorithms 让 SFTP 命令的顺序和 sshd 的一致 这样可以避免 known_hosts 文件不一致问题 + val hostKeyAlgorithms = ClientBuilder.setUpDefaultSignatureFactories(true).joinToString(",") { it.name } + commands.add("-o") + commands.add("HostKeyAlgorithms=${hostKeyAlgorithms}") + + // 不使用配置文件 + commands.add("-F") + commands.add("/dev/null") + // port commands.add("-P") commands.add(host.port.toString()) diff --git a/src/main/resources/i18n/messages.properties b/src/main/resources/i18n/messages.properties index 64621ff..68c0562 100644 --- a/src/main/resources/i18n/messages.properties +++ b/src/main/resources/i18n/messages.properties @@ -39,8 +39,8 @@ termora.doorman.mnemonic.incorrect=Incorrect mnemonic # Hosts -termora.host.verify-server-key=Host [{0}] key has been changed!

{1} key fingerprint is {2}

Are you sure you want to continue connecting? -termora.host.modified-server-key=HOST [{0}] IDENTIFICATION HAS CHANGED!

Expected: {1} key fingerprint is {2}

Actual: {3} key fingerprint is {4}

Are you sure you want to continue connecting? +termora.host.verify-server-key=Host [{0}] key has been changed

{1} key fingerprint is {2}

Are you sure you want to continue connecting? +termora.host.modified-server-key=HOST [{0}] IDENTIFICATION HAS CHANGED

Expected: {1} key fingerprint is {2}

Actual: {3} key fingerprint is {4}

Are you sure you want to continue connecting? # Settings diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties index 5aa87d4..8744a4d 100644 --- a/src/main/resources/i18n/messages_zh_CN.properties +++ b/src/main/resources/i18n/messages_zh_CN.properties @@ -37,8 +37,8 @@ termora.doorman.mnemonic.incorrect=助记词错误 # Hosts -termora.host.verify-server-key=主机 [{0}] 密钥已经改变!

{1} 的指纹 {2}

你确定要继续连接吗? -termora.host.modified-server-key=主机 [{0}] 身份已发生变化!

期待: {1} 的指纹 {2}

实际: {3} 的指纹 {4}

你确定要继续连接吗? +termora.host.verify-server-key=主机 [{0}] 密钥已经改变

{1} 的指纹 {2}

你确定要继续连接吗? +termora.host.modified-server-key=主机 [{0}] 身份已发生变化

期待: {1} 的指纹 {2}

实际: {3} 的指纹 {4}

你确定要继续连接吗? termora.setting=设置 diff --git a/src/main/resources/i18n/messages_zh_TW.properties b/src/main/resources/i18n/messages_zh_TW.properties index eb047f7..18c4bc8 100644 --- a/src/main/resources/i18n/messages_zh_TW.properties +++ b/src/main/resources/i18n/messages_zh_TW.properties @@ -38,8 +38,8 @@ termora.doorman.mnemonic.incorrect=助記詞錯誤 # Hosts -termora.host.verify-server-key=主機 [{0}] 金鑰已經改變!

{1} 的指紋 {2}

你確定要繼續連線嗎? -termora.host.modified-server-key=主機 [{0}] 身分已變更!

期待: {1} 的指紋 {2}

實際: {3} 的指紋 {4}

你確定要繼續連線嗎? +termora.host.verify-server-key=主機 [{0}] 金鑰已經改變

{1} 的指紋 {2}

你確定要繼續連線嗎? +termora.host.modified-server-key=主機 [{0}] 身分已變更

期待: {1} 的指紋 {2}

實際: {3} 的指紋 {4}

你確定要繼續連線嗎? termora.setting=設定