1

私は通常、SSH と を使用してマシンに接続しssh.elます。これをすばやく実行できるように、コマンドを定義しました。

(defun ssh-me()
  (interactive)
  (ssh "myuser@myhost"))

その後、ミニバッファーがパスワードを要求し、すべて正常に動作します。そのマシンに接続するたびにパスワードを書き込む必要がないように、関数にパスワードを設定する方法があるかどうか疑問に思っているので、次のようなものがあります。

(defun ssh-me()
  (interactive)
  (ssh "myuser@myhost")
  (send-password-to-minibuffer "mypasswd"))

それは可能ですか?

4

1 に答える 1

0

暗号化されていない小さなカスタム ファイルを使用した例を次に示します。この例では、ファイル名は.authinfo_iphoneで、1 行しか含まれていません。これを使用して、脱獄した iPhone に ssh 経由で接続します。

machine localhost login root password alpine port ssh

次に、小さな関数を使用して接続します。

(defun lawlist-remote-iphone-data ()
(interactive)
  (let ((auth-sources '("/Users/HOME/.0.data/.0.emacs/.authinfo_iphone")))
    (find-file "/ssh:root@localhost#2222:/private/var/mobile/.0.data/")))

などの外部ユーティリティを使用sshpassして、関数を作成することもできます。コマンドラインは次のようになります。

/usr/bin/sshpass -p 'my-password' ssh my-username@12.34.56.789

そして、そのコマンド ラインを組み込んで ssh 経由で iPhone にログインする関数の例を次に示します。という名前のプロセスを持つシェルモード バッファが既に開いていると考えられ*shell*ます。

(defun shell-iphone ()
"From an existing shell buffer with a process named `*shell*`,
log-in to the iPhone using sshpass."
(interactive)
  (let* (
      (password "alpine")
      (port "2222")
      (username "root")
      (host "localhost")
      (sshpass "/Users/HOME/.0.data/.0.emacs/bin/sshpass")
      (ssh "/usr/bin/ssh")
      (dir "/private/var/mobile/.0.data"))
    (comint-send-string "*shell*"
      (mapconcat 'identity `(
        ,sshpass
        "-p"
        ,password
        ,ssh
        "-p"
        ,port
        "-l"
        ,username
        ,host
        "-t"
        "\"cd " ,dir " && bash --login\"") " "))
    (comint-send-input)))
于 2014-11-03T16:07:27.070 に答える