{"id":17061491,"url":"https://github.com/yashladha/ssh-tail","last_synced_at":"2025-07-26T20:35:44.464Z","repository":{"id":91302585,"uuid":"358908869","full_name":"yashLadha/ssh-tail","owner":"yashLadha","description":"Concurrent ssh-tail sessions and sink option","archived":false,"fork":false,"pushed_at":"2022-12-02T14:51:25.000Z","size":149,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-19T09:49:51.998Z","etag":null,"topics":["client","golang","ssh-session","tailf","workflow"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yashLadha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-04-17T15:05:17.000Z","updated_at":"2023-03-04T08:16:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"d01afca6-0c6b-456d-a41e-fd33d0893073","html_url":"https://github.com/yashLadha/ssh-tail","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yashLadha/ssh-tail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashLadha%2Fssh-tail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashLadha%2Fssh-tail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashLadha%2Fssh-tail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashLadha%2Fssh-tail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yashLadha","download_url":"https://codeload.github.com/yashLadha/ssh-tail/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yashLadha%2Fssh-tail/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267228948,"owners_count":24056373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","golang","ssh-session","tailf","workflow"],"created_at":"2024-10-14T10:47:17.420Z","updated_at":"2025-07-26T20:35:44.458Z","avatar_url":"https://github.com/yashLadha.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## ssh-tail\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/logo.png\"\u003e\n\u003c/p\u003e\n\nThis project is one of the problems that I generally face while debugging some\nsystem. When I am reproducing the issue on the machine i also want to tail the\nlogs side-by-side to see the error. This becomes cumbersome when i need to fetch\nmultiple log files or use them for future purpose or constantly hop between\ndashboards, script and machine for the session.\n\nTo solve this comes `ssh-tail`. It is a\nbinary to tail log files from remote ssh machines and store them locally\ninto your system for debugging or storage purpose. It is controlled by a JSON\nconfig which saves me time of creating multiple ssh-session either using a\nwindow managers or some bash script which does that for me. Logic for creating\nnew filenames based on the unique flag.\n\nIt assumes that you have an unecrypted private key and present in your home\nfolder inside an `.ssh` folder and `ssh-agent` is running on your machine.\n\nTo use ssh-tail you need to set and env variable while running the process\n`SSH_TAIL_CONFIG` which will pick the json config to use for the ssh session.\n\n### Sinks\n\nSinks are the interfaces which will be used to dump the data fetched from the\nssh session running on the remote machine. These sinks can be local file system\nor an external service like S3. For now the implementation is only made for the\nlocal file system but later S3 or any plugin can be included.\n\n### Usage\n\n```sh\nSSH_TAIL_CONFIG=\"ssh_tunnel.json\" make\n```\n\nExample cofig file:\n\n```json\n{\n  \"host\": \"machine_ip\",\n  \"port\": int_port_number,\n  \"username\": \"username\",\n  \"commands\": [\n    {\n      \"command\": \"command_1\",\n      \"file\": \"file_1\"\n    },\n    {\n      \"command\": \"command_2\",\n      \"file\": \"file_2\"\n    }\n    ...\n  ]\n}\n```\n\nFor use with machines that are behind a proxy:\n\n```json\n{\n  \"host\": \"target_machine_ip\",\n  \"port\": target_machine_port,\n  \"username\": \"username\",\n  \"proxyConfig\": {\n    \"host\": \"proxy_machine_ip / hop_ip\",\n    \"port\": proxy_jump_machine_port,\n    \"username\": \"proxy_jump_username\"\n  },\n  \"commands\": [\n    {\n      \"command\": \"command_1\",\n      \"file\": file_1\n    }\n    ...\n  ]\n}\n```\n\n## Building locally\n\nYou can build the binary locally using the following command.\n\n```sh\nmake build\n```\n\nThis will generate build files for targets (windows, linux and darwin).\n\n## Development / Contribution\n\nThis is just a binary that i created for myself to ease my workflow. In case you\nalso face similar issues or want to solve some existing issue, feel free to\ndive right in and send a patch my way. I would be happy to review your patch.\n\nTo test out the changes locally you can use the following command.\n\n```sh\nSSH_TAIL_CONFIG=\"ssh_tunnel.json\" make\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyashladha%2Fssh-tail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyashladha%2Fssh-tail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyashladha%2Fssh-tail/lists"}