看板 java 關於我們 聯絡資訊
大家好,目前遇到一個問題是有三台主機A、B、C 現在想透過A主機使用Jsch連線到B主機, 連到B主機後再用ssh連線至C主機。 從A主機連到B主機時,可以透過Jsch設定帳號密碼,所以沒問題。 但是連線到B主機後,再ssh到C主機時,登入必須要輸入密碼, 可是ssh指令似乎沒辦法在指令上直接加上密碼, 目前程式碼像下面這樣, //建立session JSch jsch=new JSch(); String hostB = "addressB"; Session session=jsch.getSession("root", hostB, 22); session.setPassword("passowrd"); session.setConfig("StrictHostKeyChecking", "no"); session.connect(30000); //設定,並建立channel ChannelExec channel = (ChannelExec)session.openChannel("exec"); channel.setCommand("ssh addressC"); channel.setInputStream(System.in); channel.setPty(true); channel.setOutputStream(System.out); channel.connect(); //利用System.in輸入密碼登入C主機 BufferedReader br = new BufferedReader(new InputStreamReader(channel.getInputStream())); String line = null; while((line=br.readLine())!=null) { System.out.printf("%s\n", line); } channel.disconnect(); session.disconnect(); 目前這樣必須手動輸入密碼,才能登入C主機,請問各位前輩, 有辦法在channel.setInputStream(InputStream in) 改成傳入預先定義好的String或FILE嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.164.171 ※ 編輯: ywlin 來自: 118.161.164.171 (11/08 22:34)
qrtt1:用 ssh public key 認證啊. 11/08 23:18