簡體   English   中英

使用JSch執行的“ sudo”命令需要密碼,即使在交互式SSH會話中不需要密碼時也是如此

[英]“sudo” command executed with JSch requires password, even when the password is not required in an interactive SSH session

從Linux命令外殼,我可以使用用戶ABC與我們的CentOS計算機建立SSH連接。 成功建立SSH連接后,我可以運行sudo命令,不需要密碼。

sudo /usr/bin/rootsh -i -u root

在JSch程序中,我使用用戶ABC建立SSH連接,然后執行上述命令,但是它詢問我:

[sudo] password for [**ABC**]

我正在使用以下代碼打開頻道:

session.openChannel("exec");

我不明白為什么即使沒有密碼也要求輸入密碼。 它還要求輸入ABC密碼,但是在我的sudo命令中,我已經指定了root用戶。

我怎么解決這個問題?

您很可能已設置了sudoers中的requiretty選項。

JSch by不為exec通道分配偽終端。

刪除requiretty選項。 那是唯一正確的選擇。

如果無法刪除它,則可以通過調用以下命令來強制JSch分配偽終端:

channelExec.setPty(true);

另請參閱使用JSch sudo示例和Channel.setPty以在遠程主機上運行sudo命令

但這不是一個好的選擇,因為它會給您帶來很多討厭的副作用。 偽終端旨在用於交互式用途,而不是用於自動執行命令。

有關示例,請參見

sudo也是如此。 您不應該自動執行sudo 正確的解決方案是設置僅具有任務所需特權的專用私鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM