Elixir SFTP 无法在服务器上运行 - 密钥交换失败
Elixir SFTP not working on server - key exchange failed
由于某些原因,我们的服务器无法连接到 sftp 服务器,即使此代码在 运行 本地时有效。我还可以从服务器 运行 我们的 elixir 应用程序在命令行上使用 sftp 连接。
Elixir 版本:1.10.4-otp-23
connect("sftp.getevolved.com",
user: "User",
user_dir: "/etc/secrets/sftp",
rsa_pass_phrase: ssh_passphrase()
)
def connect(host, opts) do
opts =
Keyword.merge(
[
user_interaction: false,
silently_accept_hosts: true
],
opts
)
|> Enum.map(fn
{key, value} when is_binary(value) -> {key, value |> String.to_charlist()}
value -> value
end)
with :ok <- @ssh.start,
{:ok, channel_pid, connection} <-
@ssh_sftp.start_channel(
host |> String.to_charlist(),
22,
opts
) do
{:ok, {channel_pid, connection}}
end
end
当我尝试连接时出现此错误 {:error, 'Key exchange failed'}
。这似乎暗示存在算法问题。有没有办法对此进行更多调试,我不知道如何从连接中获取有关失败原因的更多信息。
事实证明这是由于我们的应用 运行 在具有只读文件系统的 k8s pod 中。我创建了一个 tmp 可写目录并将其用作 user_dir
并解决了问题。
由于某些原因,我们的服务器无法连接到 sftp 服务器,即使此代码在 运行 本地时有效。我还可以从服务器 运行 我们的 elixir 应用程序在命令行上使用 sftp 连接。
Elixir 版本:1.10.4-otp-23
connect("sftp.getevolved.com",
user: "User",
user_dir: "/etc/secrets/sftp",
rsa_pass_phrase: ssh_passphrase()
)
def connect(host, opts) do
opts =
Keyword.merge(
[
user_interaction: false,
silently_accept_hosts: true
],
opts
)
|> Enum.map(fn
{key, value} when is_binary(value) -> {key, value |> String.to_charlist()}
value -> value
end)
with :ok <- @ssh.start,
{:ok, channel_pid, connection} <-
@ssh_sftp.start_channel(
host |> String.to_charlist(),
22,
opts
) do
{:ok, {channel_pid, connection}}
end
end
当我尝试连接时出现此错误 {:error, 'Key exchange failed'}
。这似乎暗示存在算法问题。有没有办法对此进行更多调试,我不知道如何从连接中获取有关失败原因的更多信息。
事实证明这是由于我们的应用 运行 在具有只读文件系统的 k8s pod 中。我创建了一个 tmp 可写目录并将其用作 user_dir
并解决了问题。