Fedora

相同的 ssh 命令對不同的本地機器給出不同的結果

  • November 30, 2021

這甚至可能還是openssh有錯誤?

的編譯器有問題,為了讓編譯器的開發人員複製結果,我創建了一個遠端伺服器。瘋狂的是,我在同一台遠端機器上以相同的使用者執行相同的命令導致輸出與他的不同。這可能是什麼原因?

所以簡而言之,我在執行時遇到了失敗,ssh root@remote_machine 'command'而另一個人成功地執行了命令,即使 remote_machine 是相同的。這實在是太莫名其妙了,這怎麼可能?

當我在ssh會話中以互動方式執行此命令時也會發生這種情況。

當我從本地機器執行它時,它失敗了:

[efe@efeninki ~]$ ssh root@66.42.110.134
root@66.42.110.134's password:

[root@vultr ~]# cd test/
[root@vultr test]# ls
Address.sol  solc-linux-amd64-v0.8.10+commit.fc410830  test.sh
[root@vultr test]# ./solc-linux-amd64-v0.8.10+commit.fc410830 --bin Address.sol
Error: Function "extcodesize" not found.
 --> Address.sol:34:21:
  |
34 |             size := extcodesize(account)
  |                     ^^^^^^^^^^^

Error: Variable count for assignment to "size" does not match number of values (1 vs. 0)
 --> Address.sol:34:13:
  |
34 |             size := extcodesize(account)
  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

當其他使用者從docker實例執行它時,它會成功:

[efe@efeninki ~]$ sudo docker run -it --rm ubuntu bash
root@437d7edb92fc:/# ssh root@66.42.110.134
root@66.42.110.134's password:

[root@vultr ~]# cd test/
[root@vultr test]# ls
Address.sol  solc-linux-amd64-v0.8.10+commit.fc410830  test.sh
[root@vultr test]# ./solc-linux-amd64-v0.8.10+commit.fc410830 --bin Address.sol

======= Address.sol:Address =======
Binary:
60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ebf580f669e9f89d1faea352d4ba1d4ab2d9c9774fda9fb483588d4e9b09eb5564736f6c634300080a0033

ssh可以選擇將一些環境變數從客戶端傳輸到主機(SendEnv在客戶端sshAcceptEnv在伺服器端sshd)。可能是您在客戶端擁有的某些環境變數被傳輸到導致此問題的伺服器,而其他使用者沒有(或他的配置不同ssh_config)。

您應該比較ssh您和其他使用者之間的環境:

ssh root@remote_machine 'env'

我的猜測是,您會看到一些可能會影響不同結果的差異。

引用自:https://unix.stackexchange.com/questions/679578