With Homebrew:
brew install libusbmuxd
With Macports:
sudo port install libusbmuxd
(Correction to my previous edit.) |
m (→Installation: Use terminal template) |
||
(15 intermediate revisions by 5 users not shown) | |||
Line 3: | Line 3: | ||
== SSH over USB using usbmuxd == | == SSH over USB using usbmuxd == | ||
Utilizing <code>inetcat</code>, a component of <code>[[usbmuxd]]</code>, is the preferred (and likely only actively maintained) method of connecting to SSH via USB across iDevices. | |||
=== | === Installation === | ||
<tabber> | |||
|-|macOS= | |||
With Homebrew:{{Terminal|macos|brew install libusbmuxd}} | |||
With Macports:{{Terminal|macos|sudo port install libusbmuxd}} | |||
|-|Windows= | |||
A compiled version of libimobiledevice+usbmuxd is available [https://github.com/L1ghtmann/libimobiledevice/releases/latest here]. Download the .tar.xz file and extract it using [https://www.7-zip.org/ 7-zip] or a similar program. | |||
You can add this extracted folder to the path by following the walkthrough [https://stackoverflow.com/a/44272417 here]. This will put the iproxy bin on your path. | |||
|-|Linux= | |||
{{#tag:tabber| | |||
Ubuntu= | |||
<pre> | |||
sudo apt-get install usbmuxd | |||
</pre> | |||
{{!}}-{{!}} | |||
Debian= | |||
<pre> | |||
sudo apt-get install usbmuxd | |||
</pre> | |||
{{!}}-{{!}} | |||
openSUSE= | |||
< | <pre> | ||
sudo zypper install usbmuxd | |||
</pre> | |||
</ | |||
}} | |||
</tabber> | |||
=== Usage === | |||
<tabber> | |||
|-|macOS/Linux= | |||
You can set up your ssh config to connect automatically via inetcat | |||
In your ~/.ssh/config file: | |||
<pre> | |||
Host my-iphone | |||
ProxyCommand inetcat 22 <my-phone-uuid> | |||
User root | |||
StrictHostKeyChecking no | |||
UserKnownHostsFile /dev/null | |||
</pre> | |||
(You don't need to specify uuid if you only have one phone connected) | |||
Then, you can simply connect via | |||
<code>ssh my-iphone</code> | |||
Alternatively, without editing your ssh config, you can connect directly via: | |||
<code> | |||
ssh -oProxyCommand="inetcat 22" root@localhost | |||
</code> | |||
(The default password will be `alpine`) | |||
|-|Windows= | |||
Assuming you've added the <code>libimobiledevice</code> folder you extracted earlier to your PATH: | |||
<pre> | <pre> | ||
iproxy 2222:22 | |||
</pre> | </pre> | ||
Where <code>2222</code> is our "local" port, and <code>22</code> is the port on the device we want to forward. | |||
then | We can then connect to the device by running: | ||
< | <code>ssh root@localhost -p 2222</code> | ||
</ | |||
You may need to install ssh via Windows to connect to your device. | |||
If you have multiple devices connected, it may be useful to run multiple instances, specifying UDIDs and ports like so: | |||
<source lang="bash"> | |||
iproxy 2222 22 abcdef0123456789abcdef1234567890abcdef12 & \ | |||
iproxy 2223 22 9876543210fedcba9876543210fedcba98765432 | |||
</source> | |||
</tabber> | |||
== Integration with THEOS == | |||
Export the following variables in your shell in order to deploy builds to the connected device: | |||
<code>export THEOS_DEVICE_IP=localhost | |||
export THEOS_DEVICE_PORT=2222 | |||
</code> | |||
</ | |||
and | == SSH without password == | ||
Run the following commands one time and you will not be asked to type your password again. | |||
< | You must create an SSH key with <code>ssh-keygen</code> if you have not created one. A passphrase isn’t required but still recommended. You can use <code>ssh-agent</code> [https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ as described here] to keep the passphrase in memory and not be prompted for it constantly. | ||
</ | |||
Then run the following command: | |||
<code>ssh-copy-id root@DEVICE_IP</code> | |||
On OS X, ssh-copy-id will need to be installed with <code>brew install ssh-copy-id</code>. | |||
< | |||
</ | |||
== Alternatives to usbmuxd == | |||
There are several other methods of connecting to devices, however the ones that still work typically just wrap usbmuxd, and given the simplicity of installation and usage of usbmuxd, one may find it easier to just use usbmuxd itself. | |||
However, for a variety of reasons (automation, CI, more convenient integration into another project, or an aversion to CLI tools), one may want to use other tools. | |||
=== Using gandalf === | |||
Gandalf is a tool written in OCaml for connecting to a large amount of devices via SSH over USB. | |||
Instructions on installation and usage can be viewed on the [[Gandalf]] page, or on the project's [https://github.com/onlinemediagroup/ocaml-usbmux README] | |||
== SSH over USB using the iFunBox GUI (Windows only) == | === SSH over USB using the iFunBox GUI (Windows only) === | ||
This feature only exists in the '''Windows build''' of iFunBox. | This feature only exists in the '''Windows build''' of iFunBox. | ||
Line 223: | Line 133: | ||
* Assign ports as you see fit. | * Assign ports as you see fit. | ||
[[Category:Getting Started]] | |||
Languages: English • français • ไทย
Utilizing inetcat
, a component of usbmuxd
, is the preferred (and likely only actively maintained) method of connecting to SSH via USB across iDevices.
With Homebrew:
brew install libusbmuxd
With Macports:
sudo port install libusbmuxd
A compiled version of libimobiledevice+usbmuxd is available here. Download the .tar.xz file and extract it using 7-zip or a similar program. You can add this extracted folder to the path by following the walkthrough here. This will put the iproxy bin on your path.
sudo apt-get install usbmuxd
sudo apt-get install usbmuxd
sudo zypper install usbmuxd
You can set up your ssh config to connect automatically via inetcat
In your ~/.ssh/config file:
Host my-iphone ProxyCommand inetcat 22 <my-phone-uuid> User root StrictHostKeyChecking no UserKnownHostsFile /dev/null
(You don't need to specify uuid if you only have one phone connected)
Then, you can simply connect via
ssh my-iphone
Alternatively, without editing your ssh config, you can connect directly via:
ssh -oProxyCommand="inetcat 22" root@localhost
Assuming you've added the libimobiledevice
folder you extracted earlier to your PATH:
iproxy 2222:22
Where 2222
is our "local" port, and 22
is the port on the device we want to forward.
We can then connect to the device by running:
ssh root@localhost -p 2222
You may need to install ssh via Windows to connect to your device.
If you have multiple devices connected, it may be useful to run multiple instances, specifying UDIDs and ports like so:
iproxy 2222 22 abcdef0123456789abcdef1234567890abcdef12 & \
iproxy 2223 22 9876543210fedcba9876543210fedcba98765432
Export the following variables in your shell in order to deploy builds to the connected device:
export THEOS_DEVICE_IP=localhost
export THEOS_DEVICE_PORT=2222
Run the following commands one time and you will not be asked to type your password again.
You must create an SSH key with ssh-keygen
if you have not created one. A passphrase isn’t required but still recommended. You can use ssh-agent
as described here to keep the passphrase in memory and not be prompted for it constantly.
Then run the following command:
ssh-copy-id root@DEVICE_IP
On OS X, ssh-copy-id will need to be installed with brew install ssh-copy-id
.
There are several other methods of connecting to devices, however the ones that still work typically just wrap usbmuxd, and given the simplicity of installation and usage of usbmuxd, one may find it easier to just use usbmuxd itself.
However, for a variety of reasons (automation, CI, more convenient integration into another project, or an aversion to CLI tools), one may want to use other tools.
Gandalf is a tool written in OCaml for connecting to a large amount of devices via SSH over USB.
Instructions on installation and usage can be viewed on the Gandalf page, or on the project's README
This feature only exists in the Windows build of iFunBox.